summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorlimiting-factor <limiting-factor@posteo.com>2024-08-20 10:13:32 +0200
committerEarl Warren <contact@earl-warren.org>2025-01-07 17:13:21 +0100
commit168c1d806b6d18d275243ddd15d5e9c634b4dad9 (patch)
treeef0058baf707da30f5a2c9423de0e2579290e242
parentfix: f3: update issue assignees (diff)
downloadforgejo-168c1d806b6d18d275243ddd15d5e9c634b4dad9.tar.xz
forgejo-168c1d806b6d18d275243ddd15d5e9c634b4dad9.zip
fix: f3: update issue labels
-rw-r--r--services/f3/driver/issue.go61
1 files changed, 32 insertions, 29 deletions
diff --git a/services/f3/driver/issue.go b/services/f3/driver/issue.go
index 0d32b90ad1..5ba0789152 100644
--- a/services/f3/driver/issue.go
+++ b/services/f3/driver/issue.go
@@ -155,6 +155,7 @@ func (o *issue) Patch(ctx context.Context) {
}
updateIssueAssignees(ctx, id, o.forgejoIssue.Assignees)
+ updateIssueLabels(ctx, id, o.forgejoIssue.Labels)
}
func getIssueID(ctx context.Context, repoID, index int64) int64 {
@@ -167,22 +168,19 @@ func getIssueID(ctx context.Context, repoID, index int64) int64 {
func updateIssueAssignees(ctx context.Context, issueID int64, assignees []*user_model.User) {
sess := db.GetEngine(ctx)
- makeIssueAssignees := func(issueID int64) []issues_model.IssueAssignees {
- issueAssignees := make([]issues_model.IssueAssignees, 0, len(assignees))
- for _, assignee := range assignees {
- issueAssignees = append(issueAssignees, issues_model.IssueAssignees{
- IssueID: issueID,
- AssigneeID: assignee.ID,
- })
- }
- return issueAssignees
- }
if _, err := sess.Where("issue_id = ?", issueID).Delete(new(issues_model.IssueAssignees)); err != nil {
panic(fmt.Errorf("delete IssueAssignees %v %w", issueID, err))
}
- issueAssignees := makeIssueAssignees(issueID)
+ issueAssignees := make([]issues_model.IssueAssignees, 0, len(assignees))
+ for _, assignee := range assignees {
+ issueAssignees = append(issueAssignees, issues_model.IssueAssignees{
+ IssueID: issueID,
+ AssigneeID: assignee.ID,
+ })
+ }
+
if len(issueAssignees) > 0 {
if _, err := sess.Insert(issueAssignees); err != nil {
panic(fmt.Errorf("Insert %v %w", issueID, err))
@@ -190,22 +188,33 @@ func updateIssueAssignees(ctx context.Context, issueID int64, assignees []*user_
}
}
+func updateIssueLabels(ctx context.Context, issueID int64, labels []*issues_model.Label) {
+ sess := db.GetEngine(ctx)
+
+ if _, err := sess.Where("issue_id = ?", issueID).Delete(new(issues_model.IssueLabel)); err != nil {
+ panic(fmt.Errorf("delete IssueLabel %v %w", issueID, err))
+ }
+
+ issueLabels := make([]issues_model.IssueLabel, 0, len(labels))
+ for _, label := range labels {
+ issueLabels = append(issueLabels, issues_model.IssueLabel{
+ IssueID: issueID,
+ LabelID: label.ID,
+ })
+ }
+
+ if len(issueLabels) > 0 {
+ if _, err := sess.Insert(issueLabels); err != nil {
+ panic(fmt.Errorf("Insert %v %w", issueID, err))
+ }
+ }
+}
+
func (o *issue) Put(ctx context.Context) generic.NodeID {
node := o.GetNode()
o.Trace("%s", node.GetID())
o.forgejoIssue.RepoID = f3_tree.GetProjectID(o.GetNode())
- makeLabels := func(issueID int64) []issues_model.IssueLabel {
- labels := make([]issues_model.IssueLabel, 0, len(o.forgejoIssue.Labels))
- for _, label := range o.forgejoIssue.Labels {
- o.Trace("%d with label %d", issueID, label.ID)
- labels = append(labels, issues_model.IssueLabel{
- IssueID: issueID,
- LabelID: label.ID,
- })
- }
- return labels
- }
idx, err := db.GetNextResourceIndex(ctx, "issue_index", o.forgejoIssue.RepoID)
if err != nil {
@@ -220,13 +229,7 @@ func (o *issue) Put(ctx context.Context) generic.NodeID {
}
updateIssueAssignees(ctx, o.forgejoIssue.ID, o.forgejoIssue.Assignees)
-
- labels := makeLabels(o.forgejoIssue.ID)
- if len(labels) > 0 {
- if _, err := sess.Insert(labels); err != nil {
- panic(err)
- }
- }
+ updateIssueLabels(ctx, o.forgejoIssue.ID, o.forgejoIssue.Labels)
o.Trace("issue created %d/%d", o.forgejoIssue.ID, o.forgejoIssue.Index)
return generic.NewNodeID(o.forgejoIssue.Index)