Skip to content

Commit 0b207d8

Browse files
authored
Merge pull request #2260 from actiontech/fix-issue2252
remove workflow template
2 parents 86bef90 + 9a5199c commit 0b207d8

File tree

2 files changed

+14
-166
lines changed

2 files changed

+14
-166
lines changed

sqle/api/controller/v1/workflow.go

Lines changed: 2 additions & 165 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package v1
22

33
import (
44
"context"
5-
"database/sql"
65
e "errors"
76
"fmt"
87
"net/http"
@@ -68,77 +67,7 @@ type WorkFlowStepTemplateResV1 struct {
6867
// @Success 200 {object} v1.GetWorkflowTemplateResV1
6968
// @router /v1/projects/{project_name}/workflow_template [get]
7069
func GetWorkflowTemplate(c echo.Context) error {
71-
s := model.GetStorage()
72-
73-
projectUid, err := dms.GetPorjectUIDByName(context.TODO(), c.Param("project_name"))
74-
if err != nil {
75-
return controller.JSONBaseErrorReq(c, err)
76-
}
77-
var td *model.WorkflowTemplate
78-
79-
template, exist, err := s.GetWorkflowTemplateByProjectId(model.ProjectUID(projectUid))
80-
if err != nil {
81-
return controller.JSONBaseErrorReq(c, err)
82-
}
83-
if !exist {
84-
td = model.DefaultWorkflowTemplate(projectUid)
85-
err = s.SaveWorkflowTemplate(td)
86-
if err != nil {
87-
return controller.JSONBaseErrorReq(c, err)
88-
}
89-
} else {
90-
td, err = getWorkflowTemplateDetailByTemplate(template)
91-
if err != nil {
92-
return controller.JSONBaseErrorReq(c, err)
93-
}
94-
}
95-
96-
return c.JSON(http.StatusOK, &GetWorkflowTemplateResV1{
97-
BaseRes: controller.NewBaseReq(nil),
98-
Data: convertWorkflowTemplateToRes(td),
99-
})
100-
}
101-
102-
func getWorkflowTemplateDetailByTemplate(template *model.WorkflowTemplate) (*model.WorkflowTemplate, error) {
103-
s := model.GetStorage()
104-
steps, err := s.GetWorkflowStepsDetailByTemplateId(template.ID)
105-
if err != nil {
106-
return nil, err
107-
}
108-
template.Steps = steps
109-
return template, nil
110-
}
111-
112-
func convertWorkflowTemplateToRes(template *model.WorkflowTemplate) *WorkflowTemplateDetailResV1 {
113-
res := &WorkflowTemplateDetailResV1{
114-
Name: template.Name,
115-
Desc: template.Desc,
116-
AllowSubmitWhenLessAuditLevel: template.AllowSubmitWhenLessAuditLevel,
117-
UpdateTime: template.UpdatedAt,
118-
}
119-
stepsRes := make([]*WorkFlowStepTemplateResV1, 0, len(template.Steps))
120-
for _, step := range template.Steps {
121-
stepRes := &WorkFlowStepTemplateResV1{
122-
Number: int(step.Number),
123-
ApprovedByAuthorized: step.ApprovedByAuthorized.Bool,
124-
ExecuteByAuthorized: step.ExecuteByAuthorized.Bool,
125-
Typ: step.Typ,
126-
Desc: step.Desc,
127-
}
128-
stepRes.Users = make([]string, 0)
129-
if step.Users != "" {
130-
stepRes.Users = strings.Split(step.Users, ",")
131-
}
132-
stepsRes = append(stepsRes, stepRes)
133-
}
134-
res.Steps = stepsRes
135-
136-
// instanceNames, err := s.GetInstanceNamesByWorkflowTemplateId(template.ID)
137-
// if err != nil {
138-
// return nil, err
139-
// }
140-
// res.Instances = instanceNames
141-
return res
70+
return getWorkflowTemplate(c)
14271
}
14372

14473
type WorkFlowStepTemplateReqV1 struct {
@@ -149,32 +78,6 @@ type WorkFlowStepTemplateReqV1 struct {
14978
Users []string `json:"assignee_user_id_list" form:"assignee_user_id_list"`
15079
}
15180

152-
func validWorkflowTemplateReq(steps []*WorkFlowStepTemplateReqV1) error {
153-
if len(steps) == 0 {
154-
return fmt.Errorf("workflow steps cannot be empty")
155-
}
156-
if len(steps) > 5 {
157-
return fmt.Errorf("workflow steps length must be less than 6")
158-
}
159-
160-
for i, step := range steps {
161-
isLastStep := i == len(steps)-1
162-
if isLastStep && step.Type != model.WorkflowStepTypeSQLExecute {
163-
return fmt.Errorf("the last workflow step type must be sql_execute")
164-
}
165-
if !isLastStep && step.Type == model.WorkflowStepTypeSQLExecute {
166-
return fmt.Errorf("workflow step type sql_execute just be used in last step")
167-
}
168-
if len(step.Users) == 0 && !step.ApprovedByAuthorized && !step.ExecuteByAuthorized {
169-
return fmt.Errorf("the assignee is empty for step %s", step.Desc)
170-
}
171-
if len(step.Users) > 3 {
172-
return fmt.Errorf("the assignee for step cannot be more than 3")
173-
}
174-
}
175-
return nil
176-
}
177-
17881
type UpdateWorkflowTemplateReqV1 struct {
17982
Desc *string `json:"desc" form:"desc"`
18083
AllowSubmitWhenLessAuditLevel *string `json:"allow_submit_when_less_audit_level" enums:"normal,notice,warn,error"`
@@ -193,73 +96,7 @@ type UpdateWorkflowTemplateReqV1 struct {
19396
// @Success 200 {object} controller.BaseRes
19497
// @router /v1/projects/{project_name}/workflow_template [patch]
19598
func UpdateWorkflowTemplate(c echo.Context) error {
196-
req := new(UpdateWorkflowTemplateReqV1)
197-
if err := controller.BindAndValidateReq(c, req); err != nil {
198-
return err
199-
}
200-
201-
projectUid, err := dms.GetPorjectUIDByName(context.TODO(), c.Param("project_name"), true)
202-
if err != nil {
203-
return controller.JSONBaseErrorReq(c, err)
204-
}
205-
206-
s := model.GetStorage()
207-
208-
workflowTemplate, exist, err := s.GetWorkflowTemplateByProjectId(model.ProjectUID(projectUid))
209-
if err != nil {
210-
return controller.JSONBaseErrorReq(c, err)
211-
}
212-
if !exist {
213-
return controller.JSONBaseErrorReq(c, errors.New(errors.DataNotExist,
214-
fmt.Errorf("workflow template is not exist")))
215-
}
216-
217-
if req.Steps != nil {
218-
err = validWorkflowTemplateReq(req.Steps)
219-
if err != nil {
220-
return controller.JSONBaseErrorReq(c, errors.New(errors.DataInvalid, err))
221-
}
222-
223-
// dms-todo: 校验step.Users用户是否存在
224-
225-
steps := make([]*model.WorkflowStepTemplate, 0, len(req.Steps))
226-
for i, step := range req.Steps {
227-
s := &model.WorkflowStepTemplate{
228-
Number: uint(i + 1),
229-
ApprovedByAuthorized: sql.NullBool{
230-
Bool: step.ApprovedByAuthorized,
231-
Valid: true,
232-
},
233-
ExecuteByAuthorized: sql.NullBool{
234-
Bool: step.ExecuteByAuthorized,
235-
Valid: true,
236-
},
237-
Typ: step.Type,
238-
Desc: step.Desc,
239-
}
240-
s.Users = strings.Join(step.Users, ",")
241-
steps = append(steps, s)
242-
}
243-
err = s.UpdateWorkflowTemplateSteps(workflowTemplate.ID, steps)
244-
if err != nil {
245-
return controller.JSONBaseErrorReq(c, err)
246-
}
247-
}
248-
249-
if req.Desc != nil {
250-
workflowTemplate.Desc = *req.Desc
251-
}
252-
253-
if req.AllowSubmitWhenLessAuditLevel != nil {
254-
workflowTemplate.AllowSubmitWhenLessAuditLevel = *req.AllowSubmitWhenLessAuditLevel
255-
}
256-
257-
err = s.Save(workflowTemplate)
258-
if err != nil {
259-
return controller.JSONBaseErrorReq(c, err)
260-
}
261-
262-
return c.JSON(http.StatusOK, controller.NewBaseReq(nil))
99+
return updateWorkflowTemplate(c)
263100
}
264101

265102
type WorkflowStepResV1 struct {

sqle/api/controller/v1/workflow_ce.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,19 @@ import (
1111
"github.com/labstack/echo/v4"
1212
)
1313

14-
var errCommunityEditionDoesNotSupportFeatureExportWorkflowList = errors.New(errors.EnterpriseEditionFeatures, e.New("community edition does not support feature export workflow list"))
14+
var (
15+
errCommunityEditionDoesNotSupportFeatureExportWorkflowList = errors.New(errors.EnterpriseEditionFeatures, e.New("community edition does not support feature export workflow list"))
16+
errCommunityEditionDoesNotSupportWorkflowTemplate = errors.New(errors.EnterpriseEditionFeatures, e.New("community edition does not support workflow template"))
17+
)
1518

1619
func exportWorkflowV1(c echo.Context) error {
1720
return controller.JSONBaseErrorReq(c, errCommunityEditionDoesNotSupportFeatureExportWorkflowList)
1821
}
22+
23+
func getWorkflowTemplate(c echo.Context) error {
24+
return controller.JSONBaseErrorReq(c, errCommunityEditionDoesNotSupportWorkflowTemplate)
25+
}
26+
27+
func updateWorkflowTemplate(c echo.Context) error {
28+
return controller.JSONBaseErrorReq(c, errCommunityEditionDoesNotSupportWorkflowTemplate)
29+
}

0 commit comments

Comments
 (0)