From 65a18e9a88591e3111566aa957879d33665a5cda Mon Sep 17 00:00:00 2001 From: zhanghan Date: Fri, 10 Oct 2025 16:49:03 +0800 Subject: [PATCH] Apply enumeration types to structures --- .../internal/module/common/enum/rule/rule.go | 42 ++++++++++++++++++- .../module/common/enum/script/script.go | 38 +++++++++++++++++ .../dangerous_rule/model/dangerous_rule.go | 18 ++++---- .../module/dangerous_rule/service/detect.go | 2 +- .../module/job_workflow/dao/template.go | 6 +-- .../module/job_workflow/model/template.go | 2 +- .../module/script_library/model/script.go | 34 ++++++++------- 7 files changed, 112 insertions(+), 30 deletions(-) diff --git a/automation/server/internal/module/common/enum/rule/rule.go b/automation/server/internal/module/common/enum/rule/rule.go index 93a802bd..882689b2 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 d0be6b00..ec3f087b 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 2f7ca9b9..57196914 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 76249eb5..a07cd77a 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 eaf6e13c..4ad146cd 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 cebff8ad..e69fa7c4 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 94499069..99b78600 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 { -- Gitee