diff options
author | qwerty287 <80460567+qwerty287@users.noreply.github.com> | 2024-02-26 03:39:01 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-26 02:39:01 +0000 |
commit | 65952417a81631ee879d4d29ad798cbb6445fa7e (patch) | |
tree | 97c2b95929620102021b1e6c4be7973d6dd63041 /models | |
parent | f38888bc7834899777bda1a271e166d3836524cf (diff) | |
download | gitea-65952417a81631ee879d4d29ad798cbb6445fa7e.tar.gz gitea-65952417a81631ee879d4d29ad798cbb6445fa7e.zip |
Add API to get PR by base/head (#29242)
Closes https://github.com/go-gitea/gitea/issues/16289
Add a new API `/repos/{owner}/{repo}/pulls/{base}/{head}` to get a PR by
its base and head branch.
Diffstat (limited to 'models')
-rw-r--r-- | models/issues/pull.go | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/models/issues/pull.go b/models/issues/pull.go index 18e6b2776d..7d299eac27 100644 --- a/models/issues/pull.go +++ b/models/issues/pull.go @@ -652,6 +652,35 @@ func GetPullRequestByIssueID(ctx context.Context, issueID int64) (*PullRequest, return pr, pr.LoadAttributes(ctx) } +// GetPullRequestsByBaseHeadInfo returns the pull request by given base and head +func GetPullRequestByBaseHeadInfo(ctx context.Context, baseID, headID int64, base, head string) (*PullRequest, error) { + pr := &PullRequest{} + sess := db.GetEngine(ctx). + Join("INNER", "issue", "issue.id = pull_request.issue_id"). + Where("base_repo_id = ? AND base_branch = ? AND head_repo_id = ? AND head_branch = ?", baseID, base, headID, head) + has, err := sess.Get(pr) + if err != nil { + return nil, err + } + if !has { + return nil, ErrPullRequestNotExist{ + HeadRepoID: headID, + BaseRepoID: baseID, + HeadBranch: head, + BaseBranch: base, + } + } + + if err = pr.LoadAttributes(ctx); err != nil { + return nil, err + } + if err = pr.LoadIssue(ctx); err != nil { + return nil, err + } + + return pr, nil +} + // GetAllUnmergedAgitPullRequestByPoster get all unmerged agit flow pull request // By poster id. func GetAllUnmergedAgitPullRequestByPoster(ctx context.Context, uid int64) ([]*PullRequest, error) { |