From 793a9e6639305b8854e3d6c71f68f0b884714632 Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Fri, 29 Aug 2025 20:12:05 -0700 Subject: [PATCH] Fix lint --- models/issues/issue_dev_link.go | 28 +--------------------------- routers/private/hook_post_receive.go | 2 +- services/issue/issue.go | 6 +++++- services/pull/pull.go | 13 ++++++++++++- services/repository/branch.go | 18 +++++++++++++++++- 5 files changed, 36 insertions(+), 31 deletions(-) diff --git a/models/issues/issue_dev_link.go b/models/issues/issue_dev_link.go index 17d2b68b0b..f9bdabd028 100644 --- a/models/issues/issue_dev_link.go +++ b/models/issues/issue_dev_link.go @@ -5,7 +5,6 @@ package issues import ( "context" - "strconv" "code.gitea.io/gitea/models/db" git_model "code.gitea.io/gitea/models/git" @@ -25,7 +24,7 @@ type IssueDevLink struct { IssueID int64 `xorm:"INDEX"` LinkType IssueDevLinkType LinkedRepoID int64 `xorm:"INDEX"` // it can link to self repo or other repo - LinkID int64 // branch id in branch table or pull request id + LinkID int64 // branch id in branch table or the pull request id(not issue if of the pull request) CreatedUnix timeutil.TimeStamp `xorm:"INDEX created"` Repo *repo_model.Repository `xorm:"-"` // current repo of issue LinkedRepo *repo_model.Repository `xorm:"-"` @@ -54,32 +53,7 @@ func FindIssueDevLinksByIssueID(ctx context.Context, issueID int64) (IssueDevLin return links, db.GetEngine(ctx).Where("issue_id = ?", issueID).Find(&links) } -func FindDevLinksByBranch(ctx context.Context, repoID, linkedRepoID int64, branchName string) (IssueDevLinks, error) { - links := make(IssueDevLinks, 0, 5) - return links, db.GetEngine(ctx). - Join("INNER", "issue", "issue_dev_link.issue_id = issue.id"). - Where("link_type = ? AND link_index = ? AND linked_repo_id = ?", - IssueDevLinkTypeBranch, branchName, linkedRepoID). - And("issue.repo_id=?", repoID). - Find(&links) -} - func CreateIssueDevLink(ctx context.Context, link *IssueDevLink) error { _, err := db.GetEngine(ctx).Insert(link) return err } - -func DeleteIssueDevLinkByBranchName(ctx context.Context, repoID int64, branchName string) error { - _, err := db.GetEngine(ctx). - Where("linked_repo_id = ? AND link_type = ? AND link_index = ?", - repoID, IssueDevLinkTypeBranch, branchName). - Delete(new(IssueDevLink)) - return err -} - -func DeleteIssueDevLinkByPullRequestID(ctx context.Context, pullID int64) error { - pullIDStr := strconv.FormatInt(pullID, 10) - _, err := db.GetEngine(ctx).Where("link_type = ? AND link_index = ?", IssueDevLinkTypePullRequest, pullIDStr). - Delete(new(IssueDevLink)) - return err -} diff --git a/routers/private/hook_post_receive.go b/routers/private/hook_post_receive.go index 6d6ee10de6..0174dde1d9 100644 --- a/routers/private/hook_post_receive.go +++ b/routers/private/hook_post_receive.go @@ -114,7 +114,7 @@ func HookPostReceive(ctx *gitea_context.PrivateContext) { return } - if err := issues_model.DeleteIssueDevLinkByBranchName(ctx, repo.ID, update.RefFullName.BranchName()); err != nil { + if err := repo_service.DeleteIssueDevLinkByBranchName(ctx, repo.ID, update.RefFullName.BranchName()); err != nil { log.Error("Failed to DeleteIssueDevLinkByBranchName: %s/%s %s Error: %v", ownerName, repoName, update.RefFullName.BranchName(), err) } } else { diff --git a/services/issue/issue.go b/services/issue/issue.go index 17c58672d5..30ba5cd0b5 100644 --- a/services/issue/issue.go +++ b/services/issue/issue.go @@ -292,7 +292,11 @@ func deleteIssue(ctx context.Context, issue *issues_model.Issue) ([]string, erro } if issue.IsPull { - if err := issues_model.DeleteIssueDevLinkByPullRequestID(ctx, issue.ID); err != nil { + if err := issue.LoadPullRequest(ctx); err != nil { + return nil, err + } + if _, err := db.GetEngine(ctx).Where("link_type = ? AND link_id = ?", issues_model.IssueDevLinkTypePullRequest, issue.PullRequest.ID). + Delete(new(issues_model.IssueDevLink)); err != nil { return nil, err } } diff --git a/services/pull/pull.go b/services/pull/pull.go index 4a96088b94..1d286faadc 100644 --- a/services/pull/pull.go +++ b/services/pull/pull.go @@ -142,10 +142,21 @@ func NewPullRequest(ctx context.Context, opts *NewPullRequestOptions) error { } if pr.Flow == issues_model.PullRequestFlowGithub { - devLinks, err := issues_model.FindDevLinksByBranch(ctx, issue.RepoID, pr.HeadRepoID, pr.HeadBranch) + branch, err := git_model.GetBranch(ctx, pr.HeadRepoID, pr.HeadBranch) if err != nil { return err } + + devLinks := make(issues_model.IssueDevLinks, 0, 5) + if err := db.GetEngine(ctx). + Join("INNER", "issue", "issue_dev_link.issue_id = issue.id"). + Where("link_type = ? AND link_id = ? AND linked_repo_id = ?", + issues_model.IssueDevLinkTypeBranch, branch.ID, issue.RepoID). + And("issue.repo_id=?", pr.HeadRepoID). + Find(&devLinks); err != nil { + return err + } + for _, link := range devLinks { if err := issues_model.CreateIssueDevLink(ctx, &issues_model.IssueDevLink{ IssueID: link.IssueID, diff --git a/services/repository/branch.go b/services/repository/branch.go index 1c2c1a4fae..fcc31fefbe 100644 --- a/services/repository/branch.go +++ b/services/repository/branch.go @@ -513,6 +513,22 @@ func CanDeleteBranch(ctx context.Context, repo *repo_model.Repository, branchNam return nil } +func DeleteIssueDevLinkByBranchName(ctx context.Context, repoID int64, branchName string) error { + awBranch, err := git_model.GetBranch(ctx, repoID, branchName) + if err != nil && !git_model.IsErrBranchNotExist(err) { + return fmt.Errorf("GetBranch: %vc", err) + } + if awBranch == nil { + return nil + } + + _, err = db.GetEngine(ctx). + Where("linked_repo_id = ? AND link_type = ? AND link_id = ?", + repoID, issues_model.IssueDevLinkTypeBranch, awBranch.ID). + Delete(new(issues_model.IssueDevLink)) + return err +} + // DeleteBranch delete branch func DeleteBranch(ctx context.Context, doer *user_model.User, repo *repo_model.Repository, gitRepo *git.Repository, branchName string, pr *issues_model.PullRequest) error { err := repo.MustNotBeArchived() @@ -544,7 +560,7 @@ func DeleteBranch(ctx context.Context, doer *user_model.User, repo *repo_model.R } } - if err := issues_model.DeleteIssueDevLinkByBranchName(ctx, repo.ID, branchName); err != nil { + if err := DeleteIssueDevLinkByBranchName(ctx, repo.ID, branchName); err != nil { return err } if pr != nil {