Skip to content

Commit 7fefa37

Browse files
committed
Some work
1 parent 34dd91a commit 7fefa37

File tree

3 files changed

+69
-7
lines changed

3 files changed

+69
-7
lines changed

models/project/workflows.go

Lines changed: 52 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33

44
package project
55

6-
import "code.gitea.io/gitea/models/db"
6+
import (
7+
"context"
8+
9+
"code.gitea.io/gitea/models/db"
10+
"code.gitea.io/gitea/modules/timeutil"
11+
"code.gitea.io/gitea/modules/util"
12+
)
713

814
type WorkflowEvent string
915

@@ -19,12 +25,52 @@ const (
1925
WorkflowEventAutoCloseIssue WorkflowEvent = "auto_close_issue"
2026
)
2127

22-
type ProjectWorkflow struct {
23-
ID int64
24-
ProjectID int64 `xorm:"index"`
25-
WorkflowEvent WorkflowEvent `xorm:"index"`
28+
type WorkflowActionType string
29+
30+
const (
31+
WorkflowActionTypeScope WorkflowActionType = "scope" // issue, pull_request, etc.
32+
WorkflowActionTypeLabel WorkflowActionType = "label" // choose one or more labels
33+
WorkflowActionTypeColumn WorkflowActionType = "column" // choose one column
34+
WorkflowActionTypeClose WorkflowActionType = "close" // close the issue
35+
)
36+
37+
type WorkflowAction struct {
38+
ActionType WorkflowActionType
39+
ActionValue string
40+
}
41+
42+
type ProjectWorkflowEvent struct {
43+
ID int64
44+
ProjectID int64 `xorm:"unique(s)"`
45+
WorkflowEvent WorkflowEvent `xorm:"unique(s)"`
46+
WorkflowActions []WorkflowAction `xorm:"TEXT json"`
47+
CreatedUnix timeutil.TimeStamp `xorm:"created"`
48+
UpdatedUnix timeutil.TimeStamp `xorm:"updated"`
2649
}
2750

2851
func init() {
29-
db.RegisterModel(new(ProjectWorkflow))
52+
db.RegisterModel(new(ProjectWorkflowEvent))
53+
}
54+
55+
func FindWorkflowEvents(ctx context.Context, projectID int64) (map[WorkflowEvent]ProjectWorkflowEvent, error) {
56+
events := make(map[WorkflowEvent]ProjectWorkflowEvent)
57+
if err := db.GetEngine(ctx).Where("project_id=?", projectID).Find(&events); err != nil {
58+
return nil, err
59+
}
60+
res := make(map[WorkflowEvent]ProjectWorkflowEvent, len(events))
61+
for _, event := range events {
62+
res[event.WorkflowEvent] = event
63+
}
64+
return res, nil
65+
}
66+
67+
func GetWorkflowEventByID(ctx context.Context, id int64) (*ProjectWorkflowEvent, error) {
68+
p, exist, err := db.GetByID[ProjectWorkflowEvent](ctx, id)
69+
if err != nil {
70+
return nil, err
71+
}
72+
if !exist {
73+
return nil, util.ErrNotExist
74+
}
75+
return p, nil
3076
}

routers/web/projects/workflows.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// Copyright 2025 The Gitea Authors. All rights reserved.
2+
// SPDX-License-Identifier: MIT
3+
4+
package projects
5+
6+
import "code.gitea.io/gitea/services/context"
7+
8+
var tmplWorkflows = "projects/workflows"
9+
10+
func Workflows(ctx *context.Context) {
11+
}
12+
13+
func WorkflowEdit(ctx *context.Context) {
14+
}

routers/web/web.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import (
3434
"code.gitea.io/gitea/routers/web/misc"
3535
"code.gitea.io/gitea/routers/web/org"
3636
org_setting "code.gitea.io/gitea/routers/web/org/setting"
37+
"code.gitea.io/gitea/routers/web/projects"
3738
"code.gitea.io/gitea/routers/web/repo"
3839
"code.gitea.io/gitea/routers/web/repo/actions"
3940
repo_setting "code.gitea.io/gitea/routers/web/repo/setting"
@@ -1402,7 +1403,8 @@ func registerRoutes(m *web.Router) {
14021403
m.Get("", repo.Projects)
14031404
m.Get("/{id}", repo.ViewProject)
14041405
m.Group("/{id}/workflows", func() {
1405-
m.Get("", repo.Workflows)
1406+
m.Get("", projects.Workflows)
1407+
m.Get("/{workflow_id}", projects.WorkflowEdit)
14061408
})
14071409
m.Group("", func() { //nolint:dupl
14081410
m.Get("/new", repo.RenderNewProject)

0 commit comments

Comments
 (0)