diff --git a/automation/server/internal/module/common/enum/script/status.go b/automation/server/internal/module/common/enum/script/status.go new file mode 100644 index 0000000000000000000000000000000000000000..13b6f534bed6f09bd2475e2e5be75bde914c61bd --- /dev/null +++ b/automation/server/internal/module/common/enum/script/status.go @@ -0,0 +1,81 @@ +package script + +import ( + "database/sql/driver" + "encoding/json" + "fmt" + + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum" +) + +type ScriptVersionStatus int + +const ( + Develop ScriptVersionStatus = 1 + Published ScriptVersionStatus = 2 +) + +var ScriptVersionStatusMap = enum.EnumMap{ + int(Develop): "开发中", + int(Published): "已发布", +} + +func (p ScriptVersionStatus) String() string { + return ScriptVersionStatusMap.String(int(p)) +} +func ParseScriptVersionStatus(s string) ScriptVersionStatus { + for k, v := range ScriptVersionStatusMap { + if v == s { + return ScriptVersionStatus(k) + } + } + return 0 +} + +func (p ScriptVersionStatus) MarshalJSON() ([]byte, error) { + return json.Marshal(ScriptVersionStatusMap[int(p)]) +} + +func (p *ScriptVersionStatus) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err == nil { + for k, v := range ScriptVersionStatusMap { + if v == s { + *p = ScriptVersionStatus(k) + return nil + } + } + return fmt.Errorf("invalid ScriptVersionStatus: '%s', allowed: %v", s, ScriptVersionStatusMap) + } + + var num int + if err := json.Unmarshal(data, &num); err == nil { + if _, exists := ScriptVersionStatusMap[num]; exists { + *p = ScriptVersionStatus(num) + return nil + } + return fmt.Errorf("invalid ScriptVersionStatus: %d, allowed: %v", num, ScriptVersionStatusMap) + } + + return fmt.Errorf("invalid ScriptVersionStatus, must be string or number") +} + +func (p ScriptVersionStatus) Value() (driver.Value, error) { + return int64(p), nil +} + +func (p *ScriptVersionStatus) Scan(value interface{}) error { + if value == nil { + *p = 0 + return nil + } + if v, ok := value.(int64); ok { + *p = ScriptVersionStatus(int(v)) + return nil + } + return nil +} + +func GetScriptVersionStatus() []enum.Item { + return ScriptVersionStatusMap.ToItems() +} diff --git a/automation/server/internal/module/script_library/dao/script_version.go b/automation/server/internal/module/script_library/dao/script_version.go index 6d32f144aa14068d705de0583d3e94d2fbc3efb3..e2dcc48e7a1e2348f3e4e7aac821e86688cdf950 100644 --- a/automation/server/internal/module/script_library/dao/script_version.go +++ b/automation/server/internal/module/script_library/dao/script_version.go @@ -28,7 +28,7 @@ SELECT 'params', sv.params, 'version', sv.version, 'version_desc', sv.version_desc, - 'status', sv.status = 1, + 'status', sv.status, 'modify_user', sv.modify_user, 'modify_time', sv.modify_time ) diff --git a/automation/server/internal/module/script_library/model/script_version.go b/automation/server/internal/module/script_library/model/script_version.go index d3e4294b8b9e998639b095748264ef050735a1ea..c9fdb82a72655b6bda4d5ec393211c2b990c0467 100644 --- a/automation/server/internal/module/script_library/model/script_version.go +++ b/automation/server/internal/module/script_library/model/script_version.go @@ -2,6 +2,8 @@ package model import ( "encoding/json" + + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum/script" ) type ScriptParam struct { //脚本执行参数 @@ -13,15 +15,15 @@ type ScriptParam struct { //脚本执行参数 } type ScriptVersion struct { - ID int `json:"id" gorm:"primaryKey;type:int;not null;comment:脚本版本ID"` - ScriptID string `json:"script_id" gorm:"type:varchar(36);not null;uniqueIndex:uniq_script_version;comment:脚本ID"` - Params json.RawMessage `json:"params" gorm:"type:json;comment:脚本执行参数"` // 存 ScriptParam 数组 - Content string `json:"content" gorm:"type:text;not null;comment:脚本内容"` - Version string `json:"version" gorm:"type:varchar(50);not null;uniqueIndex:uniq_script_version;comment:脚本版本号"` - VersionDesc string `json:"version_desc" gorm:"type:varchar(500);uniqueIndex:uniq_script_version;comment:脚本版本描述"` - Status bool `json:"status" gorm:"type:boolean;not null;default:false;comment:脚本版本状态,true表示已发布,false表示开发中"` - ModifyUser string `json:"modify_user" gorm:"type:varchar(100);not null;comment:最后修改者"` - ModifyTime string `json:"modify_time" gorm:"comment:最后修改时间"` + ID int `json:"id" gorm:"primaryKey;type:int;not null;comment:脚本版本ID"` + ScriptID string `json:"script_id" gorm:"type:varchar(36);not null;uniqueIndex:uniq_script_version;comment:脚本ID"` + Params json.RawMessage `json:"params" gorm:"type:json;comment:脚本执行参数"` // 存 ScriptParam 数组 + Content string `json:"content" gorm:"type:text;not null;comment:脚本内容"` + Version string `json:"version" gorm:"type:varchar(50);not null;uniqueIndex:uniq_script_version;comment:脚本版本号"` + VersionDesc string `json:"version_desc" gorm:"type:varchar(500);uniqueIndex:uniq_script_version;comment:脚本版本描述"` + Status script.ScriptVersionStatus `json:"status" gorm:"default:1;comment:脚本版本状态"` + ModifyUser string `json:"modify_user" gorm:"type:varchar(100);not null;comment:最后修改者"` + ModifyTime string `json:"modify_time" gorm:"comment:最后修改时间"` } type ScriptVersionResponse struct {