diff options
author | 谈笑风生间 <makonike@anyview.fun> | 2023-05-25 10:06:27 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-24 22:06:27 -0400 |
commit | 309354c70ee994a1e8f261d7bc24e7473e601d02 (patch) | |
tree | 89a96f611eef8b37e17dcead9767ff8d9ba976ef /models/issues/pull.go | |
parent | 93c6a9a652460f89fc719024c435cacbb235d302 (diff) | |
download | gitea-309354c70ee994a1e8f261d7bc24e7473e601d02.tar.gz gitea-309354c70ee994a1e8f261d7bc24e7473e601d02.zip |
New webhook trigger for receiving Pull Request review requests (#24481)
close https://github.com/go-gitea/gitea/issues/16321
Provided a webhook trigger for requesting someone to review the Pull
Request.
Some modifications have been made to the returned `PullRequestPayload`
based on the GitHub webhook settings, including:
- add a description of the current reviewer object as
`RequestedReviewer` .
- setting the action to either **review_requested** or
**review_request_removed** based on the operation.
- adding the `RequestedReviewers` field to the issues_model.PullRequest.
This field will be loaded into the PullRequest through
`LoadRequestedReviewers()` when `ToAPIPullRequest` is called.
After the Pull Request is merged, I will supplement the relevant
documentation.
Diffstat (limited to 'models/issues/pull.go')
-rw-r--r-- | models/issues/pull.go | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/models/issues/pull.go b/models/issues/pull.go index 218a265741..3f37d8d243 100644 --- a/models/issues/pull.go +++ b/models/issues/pull.go @@ -175,9 +175,10 @@ type PullRequest struct { ChangedProtectedFiles []string `xorm:"TEXT JSON"` - IssueID int64 `xorm:"INDEX"` - Issue *Issue `xorm:"-"` - Index int64 + IssueID int64 `xorm:"INDEX"` + Issue *Issue `xorm:"-"` + Index int64 + RequestedReviewers []*user_model.User `xorm:"-"` HeadRepoID int64 `xorm:"INDEX"` HeadRepo *repo_model.Repository `xorm:"-"` @@ -302,6 +303,29 @@ func (pr *PullRequest) LoadHeadRepo(ctx context.Context) (err error) { return nil } +// LoadRequestedReviewers loads the requested reviewers. +func (pr *PullRequest) LoadRequestedReviewers(ctx context.Context) error { + if len(pr.RequestedReviewers) > 0 { + return nil + } + + reviews, err := GetReviewsByIssueID(pr.Issue.ID) + if err != nil { + return err + } + + if len(reviews) > 0 { + err = LoadReviewers(ctx, reviews) + if err != nil { + return err + } + for _, review := range reviews { + pr.RequestedReviewers = append(pr.RequestedReviewers, review.Reviewer) + } + } + return nil +} + // LoadBaseRepo loads the target repository. ErrRepoNotExist may be returned. func (pr *PullRequest) LoadBaseRepo(ctx context.Context) (err error) { if pr.BaseRepo != nil { |