diff --git a/automation/server/internal/module/common/enum/rule/rule.go b/automation/server/internal/module/common/enum/rule/rule.go index 93a802bd1d000e6edb4c19d58f294068ddd90573..882689b2c36631440988283699ea81b33cc33c92 100644 --- a/automation/server/internal/module/common/enum/rule/rule.go +++ b/automation/server/internal/module/common/enum/rule/rule.go @@ -1,6 +1,12 @@ package rule -import "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum" +import ( + "database/sql/driver" + "encoding/json" + "fmt" + + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum" +) type ActionType int @@ -27,6 +33,40 @@ func ParseActionType(s string) ActionType { return 0 } +func (p ActionType) MarshalJSON() ([]byte, error) { + return json.Marshal(ActionMap[int(p)]) +} + +func (p *ActionType) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + for k, v := range ActionMap { + if v == s { + *p = ActionType(k) + return nil + } + } + return fmt.Errorf("invalid ActionType: '%s', allowed: %v", s, ActionMap) +} + +func (p ActionType) Value() (driver.Value, error) { + return int64(p), nil +} + +func (p *ActionType) Scan(value interface{}) error { + if value == nil { + *p = 0 + return nil + } + if v, ok := value.(int64); ok { + *p = ActionType(int(v)) + return nil + } + return nil +} + func GetActions() []enum.Item { return ActionMap.ToItems() } diff --git a/automation/server/internal/module/common/enum/script/script.go b/automation/server/internal/module/common/enum/script/script.go index d0be6b00ed16c99d31e7f2aaeb73d586ac35954f..ec3f087b18bb2eebf5f7b6334979a72604a0f79d 100644 --- a/automation/server/internal/module/common/enum/script/script.go +++ b/automation/server/internal/module/common/enum/script/script.go @@ -1,6 +1,10 @@ package script import ( + "database/sql/driver" + "encoding/json" + "fmt" + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum" ) @@ -33,6 +37,40 @@ func ParseScriptType(s string) ScriptType { return 0 } +func (p ScriptType) MarshalJSON() ([]byte, error) { + return json.Marshal(ScriptTypeMap[int(p)]) +} + +func (p *ScriptType) UnmarshalJSON(data []byte) error { + var s string + if err := json.Unmarshal(data, &s); err != nil { + return err + } + for k, v := range ScriptTypeMap { + if v == s { + *p = ScriptType(k) + return nil + } + } + return fmt.Errorf("invalid ScriptType: '%s', allowed: %v", s, ScriptTypeMap) +} + +func (p ScriptType) Value() (driver.Value, error) { + return int64(p), nil +} + +func (p *ScriptType) Scan(value interface{}) error { + if value == nil { + *p = 0 + return nil + } + if v, ok := value.(int64); ok { + *p = ScriptType(int(v)) + return nil + } + return nil +} + func GetScriptType() []enum.Item { return ScriptTypeMap.ToItems() } diff --git a/automation/server/internal/module/dangerous_rule/model/dangerous_rule.go b/automation/server/internal/module/dangerous_rule/model/dangerous_rule.go index 2f7ca9b9e60a19b3de3dcaaea1614b2c07553b53..571969145bf6e950190d62e40970c1d73a1dfc50 100644 --- a/automation/server/internal/module/dangerous_rule/model/dangerous_rule.go +++ b/automation/server/internal/module/dangerous_rule/model/dangerous_rule.go @@ -1,12 +1,14 @@ package model +import "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum/rule" + type DangerousRule struct { - ID int `json:"id" gorm:"primaryKey;autoIncrement;comment:规则ID"` - Expression string `json:"expression" gorm:"type:varchar(255);uniqueIndex:uniq_expression;comment:语法检测表达式"` - Description string `json:"description" gorm:"type:varchar(255);comment:规则描述"` - ScriptTypes string `json:"script_types" gorm:"comment:脚本类型"` - Action string `json:"action" gorm:"comment:执行动作: 拦截(脚本不可保存、带参数时是否可执行), 警告(用户二次确认)"` - ModifyUser string `json:"modify_user" gorm:"type:varchar(100);not null;comment:最后修改者"` - ModifyTime string `json:"modify_time" gorm:"comment:最后修改时间"` - Status bool `json:"status" gorm:"comment:规则启用、禁用"` + ID int `json:"id" gorm:"primaryKey;autoIncrement;comment:规则ID"` + Expression string `json:"expression" gorm:"type:varchar(255);uniqueIndex:uniq_expression;comment:语法检测表达式"` + Description string `json:"description" gorm:"type:varchar(255);comment:规则描述"` + ScriptTypes string `json:"script_types" gorm:"comment:脚本类型"` + Action rule.ActionType `json:"action" gorm:"comment:执行动作: 拦截(脚本不可保存、带参数时是否可执行), 警告(用户二次确认)"` + ModifyUser string `json:"modify_user" gorm:"type:varchar(100);not null;comment:最后修改者"` + ModifyTime string `json:"modify_time" gorm:"comment:最后修改时间"` + Status bool `json:"status" gorm:"comment:规则启用、禁用"` } diff --git a/automation/server/internal/module/dangerous_rule/service/detect.go b/automation/server/internal/module/dangerous_rule/service/detect.go index 76249eb52ed8db4164bef72228efd59ee354de10..a07cd77aeb7ee0d3699923917e9084c2c3b2b0b4 100644 --- a/automation/server/internal/module/dangerous_rule/service/detect.go +++ b/automation/server/internal/module/dangerous_rule/service/detect.go @@ -159,7 +159,7 @@ func toDetectRule(r model.DangerousRule) DetectRule { Description: r.Description, } - dr.Action = rule.ParseActionType(r.Action) + dr.Action = r.Action if r.Expression != "" { if re, err := regexp.Compile(r.Expression); err == nil { diff --git a/automation/server/internal/module/job_workflow/dao/template.go b/automation/server/internal/module/job_workflow/dao/template.go index eaf6e13cc71c01151c27fe592534d3b7f48f6389..4ad146cdf0fd27af32a7e1d7668e30654d71dc02 100644 --- a/automation/server/internal/module/job_workflow/dao/template.go +++ b/automation/server/internal/module/job_workflow/dao/template.go @@ -16,7 +16,7 @@ func CreateTemplate(dto *model.TaskTemplateDTO) error { template := &model.TaskTemplate{ Name: dto.Template.Name, Description: dto.Template.Description, - Tags: dto.Template.Tags, + Tag: dto.Template.Tag, PublishStatus: dto.Template.PublishStatus, ModifyUser: dto.Template.ModifyUser, ModifyTime: time.Now().Format("2006-01-02 15:04:05"), @@ -131,7 +131,7 @@ func UpdateTemplate(dto *model.TaskTemplateDTO) error { template := &model.TaskTemplate{ Name: dto.Template.Name, Description: dto.Template.Description, - Tags: dto.Template.Tags, + Tag: dto.Template.Tag, ModifyUser: dto.Template.ModifyUser, ModifyTime: time.Now().Format("2006-01-02 15:04:05"), } @@ -257,7 +257,7 @@ func GetTemplateById(id string) (interface{}, error) { data["id"] = template.ID data["name"] = template.Name data["description"] = template.Description - data["tags"] = template.Tags + data["tag"] = template.Tag data["publish_status"] = template.PublishStatus data["modify_user"] = template.ModifyUser data["modify_time"] = template.ModifyTime diff --git a/automation/server/internal/module/job_workflow/model/template.go b/automation/server/internal/module/job_workflow/model/template.go index cebff8ad9ccac99ca616a8b79dc2447aa5654e3f..e69fa7c498fcecaf3b8cffcfbbc2f90c6d91c8ec 100644 --- a/automation/server/internal/module/job_workflow/model/template.go +++ b/automation/server/internal/module/job_workflow/model/template.go @@ -10,7 +10,7 @@ type TaskTemplate struct { ID int `json:"id" gorm:"primaryKey;autoIncrement;comment:作业编排Id"` Name string `json:"name" gorm:"type:varchar(255);comment:作业编排名称"` Description string `json:"description" gorm:"type:varchar(255);comment:作业描述"` - Tags string `json:"tags" gorm:"comment:场景标签"` + Tag string `json:"tag" gorm:"comment:场景标签"` PublishStatus workflow.PublishStatus `json:"publish_status" gorm:"comment:发布状态"` FirstStepNum int `json:"first_step_num"` LastStepNum int `json:"last_step_num"` diff --git a/automation/server/internal/module/script_library/model/script.go b/automation/server/internal/module/script_library/model/script.go index 94499069a0a52473d54c2bb84814dba3ee94ed2d..99b786005f619013f13362a3afd42c79cab0fba1 100644 --- a/automation/server/internal/module/script_library/model/script.go +++ b/automation/server/internal/module/script_library/model/script.go @@ -1,25 +1,27 @@ package model +import "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum/script" + type Script struct { - ID string `json:"id" gorm:"primaryKey;type:varchar(36);not null;comment:脚本ID"` - Name string `json:"name" gorm:"type:varchar(255);not null;uniqueIndex:uniq_script_name;comment:脚本名称"` - ScriptType string `json:"script_type" gorm:"type:varchar(100);not null;comment:脚本类型"` - Description string `json:"description" gorm:"type:varchar(500);comment:脚本描述"` - Tag string `json:"tag" gorm:"comment:场景标签"` - UsageType string `json:"usage_type" gorm:"type:varchar(50);not null;uniqueIndex:uniq_script_name;comment:脚本业务类型"` - ModifyUser string `json:"modify_user" gorm:"type:varchar(100);not null;comment:最后修改者"` - ModifyTime string `json:"modify_time" gorm:"comment:最后修改时间"` + ID string `json:"id" gorm:"primaryKey;type:varchar(36);not null;comment:脚本ID"` + Name string `json:"name" gorm:"type:varchar(255);not null;uniqueIndex:uniq_script_name;comment:脚本名称"` + ScriptType script.ScriptType `json:"script_type" gorm:"type:varchar(100);not null;comment:脚本类型"` + Description string `json:"description" gorm:"type:varchar(500);comment:脚本描述"` + Tag string `json:"tag" gorm:"comment:场景标签"` + UsageType string `json:"usage_type" gorm:"type:varchar(50);not null;uniqueIndex:uniq_script_name;comment:脚本业务类型"` + ModifyUser string `json:"modify_user" gorm:"type:varchar(100);not null;comment:最后修改者"` + ModifyTime string `json:"modify_time" gorm:"comment:最后修改时间"` } type ScriptResponse struct { - ID string `json:"id"` - Name string `json:"name"` - ScriptType string `json:"script_type"` - UsageType string `json:"usage_type"` - Description string `json:"description"` - Tag Tag `json:"tag"` - ModifyUser string `json:"modify_user"` - ModifyTime string `json:"modify_time"` + ID string `json:"id"` + Name string `json:"name"` + ScriptType script.ScriptType `json:"script_type"` + UsageType string `json:"usage_type"` + Description string `json:"description"` + Tag Tag `json:"tag"` + ModifyUser string `json:"modify_user"` + ModifyTime string `json:"modify_time"` } type AddScriptDTO struct {