@@ -2,7 +2,6 @@ package v1
22
33import (
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]
7069func 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
14473type 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-
17881type 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]
19598func 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
265102type WorkflowStepResV1 struct {
0 commit comments