Ai
1 Star 0 Fork 0

Tomsabay/restful-api-demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
dao.go 1.74 KB
一键复制 编辑 原始数据 按行查看 历史
ZSF_MAC 提交于 2025-03-05 21:12 +08:00 . 添加cratehost的测试用例
package impl
import (
"context"
"fmt"
"gitee.com/tomsabay/restful-api-demo/app/host"
)
//该文件负责对象的持久化操作,即将对象持久化到数据库中
// save 保存主机信息
func (h *hostServiceImpl) save(ctx context.Context, host *host.Host) error {
//开启事务
//通过事务提交,保证数据的一致性
tx, err := h.db.Begin()
if err != nil {
return fmt.Errorf("begin transaction error: %v", err)
}
defer func() {
if err != nil {
if err := tx.Rollback(); err != nil {
h.l.Printf("rollback transaction error: %v", err)
}
} else {
if err := tx.Commit(); err != nil {
h.l.Printf("commit transaction error: %v", err)
}
}
}()
//插入sql.go中定义的两个sql语句
rstmt, err := tx.Prepare(InsertResourceSQL)
if err != nil {
return fmt.Errorf("prepare insert resource sql error: %v", err)
}
defer rstmt.Close()
_, err = rstmt.Exec(host.Resource.Id, host.Resource.Vender, host.Resource.Region, host.Resource.CreateAt, host.Resource.ExpireAt, host.Resource.Type,
host.Resource.Name, host.Resource.Description, host.Resource.Status, host.Resource.UpdateAt, host.Resource.SyncAt,
host.Resource.Account, host.Resource.PublicIP, host.Resource.PrivateIP)
if err != nil {
return fmt.Errorf("exec insert resource sql error: %v", err)
}
dstmt, err := tx.Prepare(InsertDescribeSQL)
if err != nil {
return fmt.Errorf("prepare insert describe sql error: %v", err)
}
defer dstmt.Close()
_, err = dstmt.Exec(host.Describe.ResourceId, host.Describe.CPU, host.Describe.Memory, host.Describe.GPUAmount, host.Describe.GPUSpec,
host.Describe.OSType, host.Describe.OSName, host.Describe.SerialNumber)
if err != nil {
return fmt.Errorf("exec insert describe sql error: %v", err)
}
return nil
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Go
1
https://gitee.com/tomsabay/restful-api-demo.git
git@gitee.com:tomsabay/restful-api-demo.git
tomsabay
restful-api-demo
restful-api-demo
5f2002318f3c

搜索帮助