From cb17498bba9b0d15b8f19621f1c54a0db311d461 Mon Sep 17 00:00:00 2001 From: iwanghc Date: Sat, 12 Oct 2024 18:25:54 +0800 Subject: [PATCH 1/2] fix: fix displays the version label when the workflow has no bound version --- sqle/api/controller/v2/workflow.go | 13 ++++++++----- sqle/model/sql_version_ce.go | 4 ++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/sqle/api/controller/v2/workflow.go b/sqle/api/controller/v2/workflow.go index e371e8dec6..d0f8d13572 100644 --- a/sqle/api/controller/v2/workflow.go +++ b/sqle/api/controller/v2/workflow.go @@ -1218,7 +1218,7 @@ func GetWorkflowV2(c echo.Context) error { if err != nil { return controller.JSONBaseErrorReq(c, err) } - sqlVersion, err := s.GetSQLVersionByWorkflowId(workflow.WorkflowId) + sqlVersion, _, err := s.GetSQLVersionByWorkflowId(workflow.WorkflowId) if err != nil { return controller.JSONBaseErrorReq(c, err) } @@ -1240,11 +1240,14 @@ func convertWorkflowToRes(ctx context.Context, workflow *model.Workflow, sqlVers CreateTime: &workflow.CreatedAt, AssociatedStageWorkflows: convertAssociatedWorkflowToRes(associatedWorkflows), } - sqlVersionRes := &SqlVersion{ - SqlVersionId: sqlVersion.ID, - SqlVersionName: sqlVersion.Version, + if sqlVersion != nil { + sqlVersionRes := &SqlVersion{ + SqlVersionId: sqlVersion.ID, + SqlVersionName: sqlVersion.Version, + } + workflowRes.SqlVersion = sqlVersionRes + } - workflowRes.SqlVersion = sqlVersionRes // convert workflow record workflowRecordRes := convertWorkflowRecordToRes(ctx, workflow, workflow.Record) diff --git a/sqle/model/sql_version_ce.go b/sqle/model/sql_version_ce.go index 98c9a8968f..979d7e1664 100644 --- a/sqle/model/sql_version_ce.go +++ b/sqle/model/sql_version_ce.go @@ -19,6 +19,6 @@ func (s *Storage) GetAssociatedStageWorkflows(workflowId string) ([]*AssociatedS return nil, nil } -func (s *Storage) GetSQLVersionByWorkflowId(workflowId string) (*SqlVersion, error) { - return &SqlVersion{}, nil +func (s *Storage) GetSQLVersionByWorkflowId(workflowId string) (*SqlVersion, bool, error) { + return &SqlVersion{}, false, nil } From b1396e768c5c5d2fa9a79bfe3e7d6e97e5cb93e3 Mon Sep 17 00:00:00 2001 From: iwanghc Date: Sat, 12 Oct 2024 18:29:41 +0800 Subject: [PATCH 2/2] remove: removes the sql release workflow from the create workflow --- sqle/api/controller/v2/workflow.go | 2 +- sqle/model/workflow.go | 38 ++++++++++-------------------- 2 files changed, 13 insertions(+), 27 deletions(-) diff --git a/sqle/api/controller/v2/workflow.go b/sqle/api/controller/v2/workflow.go index d0f8d13572..0adc2ec36c 100644 --- a/sqle/api/controller/v2/workflow.go +++ b/sqle/api/controller/v2/workflow.go @@ -755,7 +755,7 @@ func CreateWorkflowV2(c echo.Context) error { } } - err = s.CreateWorkflowV2(req.Subject, workflowId, req.Desc, user, tasks, stepTemplates, model.ProjectUID(projectUid), req.SqlVersionID, nil, nil, func(tasks []*model.Task) (auditWorkflowUsers, canExecUser [][]*model.User) { + err = s.CreateWorkflowV2(req.Subject, workflowId, req.Desc, user, tasks, stepTemplates, model.ProjectUID(projectUid), req.SqlVersionID, func(tasks []*model.Task) (auditWorkflowUsers, canExecUser [][]*model.User) { auditWorkflowUsers = make([][]*model.User, len(tasks)) executorWorkflowUsers := make([][]*model.User, len(tasks)) for i, task := range tasks { diff --git a/sqle/model/workflow.go b/sqle/model/workflow.go index 7e15cc6bdc..51686d01b0 100644 --- a/sqle/model/workflow.go +++ b/sqle/model/workflow.go @@ -474,7 +474,8 @@ func (w *Workflow) GetNeedSendOATaskIds(entry *logrus.Entry) ([]uint, error) { return taskIds, nil } -func (s *Storage) CreateWorkflowV2(subject, workflowId, desc string, user *User, tasks []*Task, stepTemplates []*WorkflowStepTemplate, projectId ProjectUID, sqlVersionId, versionStageId *uint, workflowStageSequence *int, getOpExecUser func([]*Task) (canAuditUsers [][]*User, canExecUsers [][]*User)) error { +func (s *Storage) CreateWorkflowV2(subject, workflowId, desc string, user *User, tasks []*Task, stepTemplates []*WorkflowStepTemplate, projectId ProjectUID, + sqlVersionId *uint, getOpExecUser func([]*Task) (canAuditUsers [][]*User, canExecUsers [][]*User)) error { if len(tasks) <= 0 { return errors.New(errors.DataConflict, fmt.Errorf("there is no task for creating workflow")) } @@ -594,42 +595,27 @@ func (s *Storage) CreateWorkflowV2(subject, workflowId, desc string, user *User, } } } - + // 在SQL版本的第一阶段建立与工单的关联 if sqlVersionId != nil { stage := &SqlVersionStage{} - if versionStageId == nil { - // get the first stage - err = tx.Model(&SqlVersionStage{}). - Preload("WorkflowVersionStage"). - Preload("SqlVersionStagesDependency"). - Where("sql_version_id = ?", sqlVersionId). - Order("stage_sequence ASC").First(stage).Error - } else { - // get specific stage - err = tx.Model(&SqlVersionStage{}). - Preload("WorkflowVersionStage"). - Preload("SqlVersionStagesDependency"). - Where("sql_version_id = ? AND id = ?", sqlVersionId, versionStageId). - First(stage).Error - } + // 获取版本的第一个阶段 + err := tx.Model(&SqlVersionStage{}). + Preload("WorkflowVersionStage"). + Preload("SqlVersionStagesDependency"). + Where("sql_version_id = ?", sqlVersionId). + Order("stage_sequence ASC").First(stage).Error if err != nil { tx.Rollback() return errors.New(errors.ConnectStorageError, err) } - // associate sql version with workflow + // 建立版本阶段与工单的关联 workflowVersionStageRelation := &WorkflowVersionStage{ WorkflowID: workflowId, SqlVersionID: *sqlVersionId, SqlVersionStageID: stage.ID, WorkflowReleaseStatus: stage.InitialStatusOfWorkflow(), - } - - if workflowStageSequence != nil { - // 当在版本中发布工单时,工单发布到下一阶段所在的占位由当前阶段决定 - workflowVersionStageRelation.WorkflowSequence = *workflowStageSequence - } else { - // 当在版本中新建工单时,该工单的顺序为该阶段的最后一条工单 - workflowVersionStageRelation.WorkflowSequence = len(stage.WorkflowVersionStage) + 1 + // 在版本中新建工单时,该工单的顺序为该阶段的最后一条工单 + WorkflowSequence: len(stage.WorkflowVersionStage) + 1, } err = tx.Create(workflowVersionStageRelation).Error if err != nil {