代码拉取完成,页面将自动刷新
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
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。