// Package database define database operation functions package database import ( "context" "fmt" "time" "modelRT/common/errcode" "modelRT/model" jsoniter "github.com/json-iterator/go" "gorm.io/gorm" ) // UpdateModelIntoDB define update component model params of the circuit diagram into DB func UpdateModelIntoDB(ctx context.Context, tx *gorm.DB, componentID int64, componentType int, modelParas string) error { cancelCtx, cancel := context.WithTimeout(ctx, 5*time.Second) defer cancel() modelStruct := model.SelectModelByType(componentType) if modelStruct == nil { return fmt.Errorf("can not get component model by model type %d", componentType) } err := jsoniter.Unmarshal([]byte(modelParas), modelStruct) if err != nil { return fmt.Errorf("unmarshal component info by component struct %s,failed", model.SelectModelNameByType(componentType)) } modelStruct.SetComponentID(componentID) result := tx.Model(modelStruct).WithContext(cancelCtx).Where("component_id = ?", componentID).Updates(modelStruct) if result.Error != nil || result.RowsAffected == 0 { err := result.Error if result.RowsAffected == 0 { err = fmt.Errorf("%w:please check where conditions", errcode.ErrUpdateRowZero) } return err } return nil }