// Package database define database operation functions package database import ( "context" "fmt" "strconv" "time" "modelRT/common/errcode" "modelRT/network" "modelRT/orm" "github.com/gofrs/uuid" "gorm.io/gorm" ) // CreateMeasurement define create measurement info of the circuit diagram into DB func CreateMeasurement(ctx context.Context, tx *gorm.DB, measurementInfo network.MeasurementCreateInfo) (string, error) { cancelCtx, cancel := context.WithTimeout(ctx, 5*time.Second) defer cancel() globalUUID, err := uuid.FromString(measurementInfo.UUID) if err != nil { return "", fmt.Errorf("format uuid from string type failed:%w", err) } measurement := orm.Measurement{ Tag: "", Name: "", Type: -1, Size: -1, DataSource: nil, EventPlan: nil, BayUUID: globalUUID, ComponentUUID: globalUUID, Op: -1, Ts: time.Now(), } result := tx.WithContext(cancelCtx).Create(&measurement) if result.Error != nil || result.RowsAffected == 0 { err := result.Error if result.RowsAffected == 0 { err = fmt.Errorf("%w:please check insert component slice", errcode.ErrInsertRowUnexpected) } return "", fmt.Errorf("insert component info failed:%w", err) } return strconv.FormatInt(measurement.ID, 10), nil }