From 9ae758f6e6de1dedf1bb9443142f55be0e20df44 Mon Sep 17 00:00:00 2001 From: zhanghan Date: Sat, 11 Oct 2025 10:16:39 +0800 Subject: [PATCH] Automatically generate version numbers for easy unified management --- .../module/job_workflow/model/template.go | 21 ++++++++++--------- .../module/script_library/dao/script.go | 3 +-- .../script_library/dao/script_version.go | 13 +++++++++++- .../module/script_library/model/script.go | 18 ++++++++-------- .../module/script_library/service/script.go | 6 +++++- .../script_library/service/script_version.go | 14 +++++++++++-- 6 files changed, 50 insertions(+), 25 deletions(-) diff --git a/automation/server/internal/module/job_workflow/model/template.go b/automation/server/internal/module/job_workflow/model/template.go index e69fa7c4..b3122c1c 100644 --- a/automation/server/internal/module/job_workflow/model/template.go +++ b/automation/server/internal/module/job_workflow/model/template.go @@ -3,6 +3,7 @@ package model import ( "encoding/json" + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum/script" "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum/workflow" ) @@ -47,16 +48,16 @@ type TaskTemplateStep struct { } type TaskTemplateStepScript struct { - ID int `json:"id" gorm:"primaryKey;autoIncrement"` - TemplateId int `json:"template_id" gorm:"comment:作业编排Id"` - StepNum int `json:"step_num" gorm:"comment:作业编排步骤Id"` - ScriptType string `json:"script_type" gorm:"comment:脚本类型"` - ScriptId string `json:"script_id" gorm:"comment:引用脚本Id"` - ScriptVersionId string `json:"script_version_id" gorm:"comment:引用脚本版本Id"` - ScriptContent string `json:"script_content" gorm:"comment:脚本内容"` - ScriptParam string `json:"script_param" gorm:"comment:脚本执行参数"` - ScriptTimeout int `json:"script_timeout" gorm:"comment:脚本超时"` - DestinationHostList json.RawMessage `json:"destination_host_list" gorm:"comment:远程执行主机列表"` + ID int `json:"id" gorm:"primaryKey;autoIncrement"` + TemplateId int `json:"template_id" gorm:"comment:作业编排Id"` + StepNum int `json:"step_num" gorm:"comment:作业编排步骤Id"` + ScriptType script.ScriptType `json:"script_type" gorm:"comment:脚本类型"` + ScriptId string `json:"script_id" gorm:"comment:引用脚本Id"` + ScriptVersionId string `json:"script_version_id" gorm:"comment:引用脚本版本Id"` + ScriptContent string `json:"script_content" gorm:"comment:脚本内容"` + ScriptParam string `json:"script_param" gorm:"comment:脚本执行参数"` + ScriptTimeout int `json:"script_timeout" gorm:"comment:脚本超时"` + DestinationHostList json.RawMessage `json:"destination_host_list" gorm:"comment:远程执行主机列表"` } type TaskTemplateDTO struct { diff --git a/automation/server/internal/module/script_library/dao/script.go b/automation/server/internal/module/script_library/dao/script.go index d0df264a..740664bb 100644 --- a/automation/server/internal/module/script_library/dao/script.go +++ b/automation/server/internal/module/script_library/dao/script.go @@ -28,14 +28,13 @@ func GetScripts(query *response.PagedQuery) ([]*model.ScriptResponse, int, error if err := q.Order("modify_time desc").Find(&scripts).Error; err != nil { return nil, 0, err } - // 组装 ScriptResponse var scriptResponses []*model.ScriptResponse for _, s := range scripts { sr := &model.ScriptResponse{ ID: s.ID, Name: s.Name, - ScriptType: s.ScriptType, + ScriptType: s.ScriptType.String(), UsageType: s.UsageType, Description: s.Description, ModifyUser: s.ModifyUser, 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 85051d19..6d32f144 100644 --- a/automation/server/internal/module/script_library/dao/script_version.go +++ b/automation/server/internal/module/script_library/dao/script_version.go @@ -3,9 +3,11 @@ package dao import ( "encoding/json" "fmt" + "strconv" "gorm.io/gorm" "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/global" + "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/enum/script" "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/script_library/model" ) @@ -67,10 +69,11 @@ WHERE s.id = ? return &model.ScriptVersionResponse{}, fmt.Errorf("解析版本失败: %w", err) } + script_type, _ := strconv.Atoi(row.ScriptType) resp := &model.ScriptVersionResponse{ ID: row.ScriptID, Name: row.Name, - ScriptType: row.ScriptType, + ScriptType: script.ScriptTypeMap[script_type], Description: row.Description, Tag: tag, ScriptVersions: scriptVersions, @@ -112,3 +115,11 @@ func DeleteScriptVersion(id int, scriptId string) error { return nil }) } + +func GetLatestScriptVersion(scriptId string) (string, error) { + var sv model.ScriptVersion + if err := global.App.MySQL.Model(&model.ScriptVersion{}).Where("script_id = ?", scriptId).Order("id DESC").First(&sv).Error; err != nil { + return "", err + } + return sv.Version, nil +} diff --git a/automation/server/internal/module/script_library/model/script.go b/automation/server/internal/module/script_library/model/script.go index 99b78600..42e8e8f6 100644 --- a/automation/server/internal/module/script_library/model/script.go +++ b/automation/server/internal/module/script_library/model/script.go @@ -5,7 +5,7 @@ import "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/common/e 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 script.ScriptType `json:"script_type" gorm:"type:varchar(100);not null;comment:脚本类型"` + ScriptType script.ScriptType `json:"script_type" gorm:"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:脚本业务类型"` @@ -14,14 +14,14 @@ type Script struct { } type ScriptResponse struct { - 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"` + 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"` } type AddScriptDTO struct { diff --git a/automation/server/internal/module/script_library/service/script.go b/automation/server/internal/module/script_library/service/script.go index 63bcb6cd..46b5d5f4 100644 --- a/automation/server/internal/module/script_library/service/script.go +++ b/automation/server/internal/module/script_library/service/script.go @@ -13,6 +13,10 @@ func generateScriptId() string { return uuid.NewString() } +func generateFirstVersion() string { + return "V1" +} + func AddScript(s *model.AddScriptDTO) error { scriptId := generateScriptId() @@ -37,7 +41,7 @@ func AddScript(s *model.AddScriptDTO) error { // Content: decodedContent, Content: s.FirstVersion.Content, Params: s.FirstVersion.Params, - Version: s.FirstVersion.Version, + Version: generateFirstVersion(), VersionDesc: s.FirstVersion.VersionDesc, ModifyUser: s.Script.ModifyUser, ModifyTime: time.Now().Format("2006-01-02 15:04:05"), diff --git a/automation/server/internal/module/script_library/service/script_version.go b/automation/server/internal/module/script_library/service/script_version.go index 6b96b959..3de55570 100644 --- a/automation/server/internal/module/script_library/service/script_version.go +++ b/automation/server/internal/module/script_library/service/script_version.go @@ -1,6 +1,8 @@ package service import ( + "fmt" + "strconv" "time" "openeuler.org/PilotGo/PilotGo-plugin-automation/internal/module/script_library/dao" @@ -16,7 +18,7 @@ func AddScriptVersion(scriptId string, sv *model.ScriptVersion) error { ScriptID: scriptId, Content: sv.Content, Params: sv.Params, - Version: sv.Version, + Version: nextVersion(scriptId), VersionDesc: sv.VersionDesc, ModifyUser: sv.ModifyUser, ModifyTime: time.Now().Format("2006-01-02 15:04:05"), @@ -28,7 +30,6 @@ func UpdateScriptVersion(scriptId string, sv *model.ScriptVersion) error { scriptVersion := &model.ScriptVersion{ Content: sv.Content, Params: sv.Params, - Version: sv.Version, VersionDesc: sv.VersionDesc, ModifyUser: sv.ModifyUser, ModifyTime: time.Now().Format("2006-01-02 15:04:05"), @@ -39,3 +40,12 @@ func UpdateScriptVersion(scriptId string, sv *model.ScriptVersion) error { func DeleteScriptVersion(id int, scriptId string) error { return dao.DeleteScriptVersion(id, scriptId) } + +func nextVersion(scriptId string) string { + currentVersion, err := dao.GetLatestScriptVersion(scriptId) + if err != nil { + return generateFirstVersion() + } + versionNum, _ := strconv.Atoi(currentVersion[1:]) + return fmt.Sprintf("V%d", versionNum+1) +} -- Gitee