modelRT/network/circuit_diagram_update_requ...

141 lines
5.1 KiB
Go

// Package network define struct of network operation
package network
import (
"fmt"
"modelRT/common/errcode"
"modelRT/constants"
"github.com/gofrs/uuid"
)
// TopologicChangeInfo defines circuit diagram topologic change info
type TopologicChangeInfo struct {
ChangeType int `json:"change_type"`
Flag int `json:"flag"`
OldUUIDFrom string `json:"old_uuid_from"`
OldUUIDTo string `json:"old_uuid_to"`
NewUUIDFrom string `json:"new_uuid_from"`
NewUUIDTo string `json:"new_uuid_to"`
Comment string `json:"comment"`
}
// TopologicUUIDChangeInfos defines circuit diagram topologic uuid change info
type TopologicUUIDChangeInfos struct {
ChangeType int `json:"change_type"`
Flag int `json:"flag"`
OldUUIDFrom uuid.UUID `json:"old_uuid_from"`
OldUUIDTo uuid.UUID `json:"old_uuid_to"`
NewUUIDFrom uuid.UUID `json:"new_uuid_from"`
NewUUIDTo uuid.UUID `json:"new_uuid_to"`
Comment string `json:"comment"`
}
// ComponentUpdateInfo defines circuit diagram component params info
type ComponentUpdateInfo struct {
ID int64 `json:"id"`
UUID string `json:"uuid"`
Name string `json:"name"`
Context string `json:"context"`
GridID int64 `json:"grid_id"`
ZoneID int64 `json:"zone_id"`
StationID int64 `json:"station_id"`
Params string `json:"params"`
Op int `json:"op"`
Tag string `json:"tag"`
}
// CircuitDiagramUpdateRequest defines request params of circuit diagram update api
type CircuitDiagramUpdateRequest struct {
PageID int64 `json:"page_id"`
FreeVertexs []string `json:"free_vertexs"`
TopologicLinks []TopologicChangeInfo `json:"topologics"`
ComponentInfos []ComponentUpdateInfo `json:"component_infos"`
}
// ParseUUID define parse UUID by change type in topologic change struct
func ParseUUID(info TopologicChangeInfo) (TopologicUUIDChangeInfos, error) {
var UUIDChangeInfo TopologicUUIDChangeInfos
UUIDChangeInfo.ChangeType = info.ChangeType
switch info.ChangeType {
case constants.UUIDFromChangeType:
if info.NewUUIDFrom == info.OldUUIDFrom {
return UUIDChangeInfo, fmt.Errorf("topologic change data check failed:%w", constants.ErrUUIDFromCheckT1)
}
if info.NewUUIDTo != info.OldUUIDTo {
return UUIDChangeInfo, fmt.Errorf("topologic change data check failed:%w", constants.ErrUUIDToCheckT1)
}
oldUUIDFrom, err := uuid.FromString(info.OldUUIDFrom)
if err != nil {
return UUIDChangeInfo, fmt.Errorf("convert data from string type to uuid type failed,old uuid_from value:%s", info.OldUUIDFrom)
}
UUIDChangeInfo.OldUUIDFrom = oldUUIDFrom
newUUIDFrom, err := uuid.FromString(info.NewUUIDFrom)
if err != nil {
return UUIDChangeInfo, fmt.Errorf("convert data from string type to uuid type failed,new uuid_from value:%s", info.NewUUIDFrom)
}
UUIDChangeInfo.NewUUIDFrom = newUUIDFrom
OldUUIDTo, err := uuid.FromString(info.OldUUIDTo)
if err != nil {
return UUIDChangeInfo, fmt.Errorf("convert data from string type to uuid type failed,old uuid_to value:%s", info.OldUUIDTo)
}
UUIDChangeInfo.OldUUIDTo = OldUUIDTo
UUIDChangeInfo.NewUUIDTo = OldUUIDTo
case constants.UUIDToChangeType:
if info.NewUUIDFrom != info.OldUUIDFrom {
return UUIDChangeInfo, fmt.Errorf("topologic change data check failed:%w", constants.ErrUUIDFromCheckT2)
}
if info.NewUUIDTo == info.OldUUIDTo {
return UUIDChangeInfo, fmt.Errorf("topologic change data check failed:%w", constants.ErrUUIDToCheckT2)
}
oldUUIDFrom, err := uuid.FromString(info.OldUUIDFrom)
if err != nil {
return UUIDChangeInfo, fmt.Errorf("convert data from string type to uuid type failed,old uuid_from value:%s", info.OldUUIDFrom)
}
UUIDChangeInfo.OldUUIDFrom = oldUUIDFrom
UUIDChangeInfo.NewUUIDFrom = oldUUIDFrom
OldUUIDTo, err := uuid.FromString(info.OldUUIDTo)
if err != nil {
return UUIDChangeInfo, fmt.Errorf("convert data from string type to uuid type failed,old uuid_to value:%s", info.OldUUIDTo)
}
UUIDChangeInfo.OldUUIDTo = OldUUIDTo
newUUIDTo, err := uuid.FromString(info.NewUUIDTo)
if err != nil {
return UUIDChangeInfo, fmt.Errorf("convert data from string type to uuid type failed,new uuid_to value:%s", info.NewUUIDTo)
}
UUIDChangeInfo.NewUUIDTo = newUUIDTo
case constants.UUIDAddChangeType:
if info.OldUUIDFrom != "" {
return UUIDChangeInfo, fmt.Errorf("topologic change data check failed:%w", constants.ErrUUIDFromCheckT3)
}
if info.OldUUIDTo != "" {
return UUIDChangeInfo, fmt.Errorf("topologic change data check failed:%w", constants.ErrUUIDToCheckT3)
}
newUUIDFrom, err := uuid.FromString(info.NewUUIDFrom)
if err != nil {
return UUIDChangeInfo, fmt.Errorf("convert data from string type to uuid type failed,new uuid_from value:%s", info.NewUUIDFrom)
}
UUIDChangeInfo.NewUUIDFrom = newUUIDFrom
newUUIDTo, err := uuid.FromString(info.NewUUIDTo)
if err != nil {
return UUIDChangeInfo, fmt.Errorf("convert data from string type to uuid type failed,new uuid_to value:%s", info.NewUUIDTo)
}
UUIDChangeInfo.NewUUIDTo = newUUIDTo
default:
return UUIDChangeInfo, errcode.ErrUUIDChangeType
}
UUIDChangeInfo.Flag = info.Flag
UUIDChangeInfo.Comment = info.Comment
return UUIDChangeInfo, nil
}