@@ -39,7 +39,7 @@ type WorkflowAction struct {
3939 ActionValue string
4040}
4141
42- type ProjectWorkflowEvent struct {
42+ type ProjectWorkflow struct {
4343 ID int64
4444 ProjectID int64 `xorm:"unique(s)"`
4545 WorkflowEvent WorkflowEvent `xorm:"unique(s)"`
@@ -48,24 +48,52 @@ type ProjectWorkflowEvent struct {
4848 UpdatedUnix timeutil.TimeStamp `xorm:"updated"`
4949}
5050
51+ func (p * ProjectWorkflow ) Link () string {
52+ return ""
53+ }
54+
55+ func newDefaultWorkflows () []* ProjectWorkflow {
56+ return []* ProjectWorkflow {
57+ {
58+ WorkflowEvent : WorkflowEventItemAddedToProject ,
59+ WorkflowActions : []WorkflowAction {{ActionType : WorkflowActionTypeScope , ActionValue : "issue" }},
60+ },
61+ {
62+ ProjectID : 0 ,
63+ WorkflowEvent : WorkflowEventItemReopened ,
64+ WorkflowActions : []WorkflowAction {{ActionType : WorkflowActionTypeScope , ActionValue : "issue" }},
65+ },
66+ }
67+ }
68+
69+ func GetWorkflowDefaultValue (workflowIDStr string ) * ProjectWorkflow {
70+ workflows := newDefaultWorkflows ()
71+ for _ , workflow := range workflows {
72+ if workflow .WorkflowEvent == WorkflowEvent (workflowIDStr ) {
73+ return workflow
74+ }
75+ }
76+ return & ProjectWorkflow {}
77+ }
78+
5179func init () {
52- db .RegisterModel (new (ProjectWorkflowEvent ))
80+ db .RegisterModel (new (ProjectWorkflow ))
5381}
5482
55- func FindWorkflowEvents (ctx context.Context , projectID int64 ) (map [WorkflowEvent ]ProjectWorkflowEvent , error ) {
56- events := make (map [WorkflowEvent ]ProjectWorkflowEvent )
83+ func FindWorkflowEvents (ctx context.Context , projectID int64 ) (map [WorkflowEvent ]ProjectWorkflow , error ) {
84+ events := make (map [WorkflowEvent ]ProjectWorkflow )
5785 if err := db .GetEngine (ctx ).Where ("project_id=?" , projectID ).Find (& events ); err != nil {
5886 return nil , err
5987 }
60- res := make (map [WorkflowEvent ]ProjectWorkflowEvent , len (events ))
88+ res := make (map [WorkflowEvent ]ProjectWorkflow , len (events ))
6189 for _ , event := range events {
6290 res [event .WorkflowEvent ] = event
6391 }
6492 return res , nil
6593}
6694
67- func GetWorkflowEventByID (ctx context.Context , id int64 ) (* ProjectWorkflowEvent , error ) {
68- p , exist , err := db .GetByID [ProjectWorkflowEvent ](ctx , id )
95+ func GetWorkflowByID (ctx context.Context , id int64 ) (* ProjectWorkflow , error ) {
96+ p , exist , err := db .GetByID [ProjectWorkflow ](ctx , id )
6997 if err != nil {
7098 return nil , err
7199 }
@@ -74,3 +102,19 @@ func GetWorkflowEventByID(ctx context.Context, id int64) (*ProjectWorkflowEvent,
74102 }
75103 return p , nil
76104}
105+
106+ func GetWorkflows (ctx context.Context , projectID int64 ) ([]* ProjectWorkflow , error ) {
107+ events := make ([]* ProjectWorkflow , 0 , 10 )
108+ if err := db .GetEngine (ctx ).Where ("project_id=?" , projectID ).Find (& events ); err != nil {
109+ return nil , err
110+ }
111+ workflows := newDefaultWorkflows ()
112+ for i , defaultWorkflow := range workflows {
113+ for _ , workflow := range events {
114+ if workflow .WorkflowEvent == defaultWorkflow .WorkflowEvent {
115+ workflows [i ] = workflow
116+ }
117+ }
118+ }
119+ return workflows , nil
120+ }
0 commit comments