move CreateReview to moduels/pull (#7841)

This commit is contained in:
Lunny Xiao 2019-08-14 23:32:19 +08:00 committed by GitHub
parent eaa4d4ea98
commit c021890930
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 60 additions and 38 deletions

View file

@ -8,7 +8,6 @@ import (
"fmt" "fmt"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
api "code.gitea.io/gitea/modules/structs"
"code.gitea.io/gitea/modules/util" "code.gitea.io/gitea/modules/util"
"github.com/go-xorm/xorm" "github.com/go-xorm/xorm"
@ -235,42 +234,6 @@ func createReview(e Engine, opts CreateReviewOptions) (*Review, error) {
return nil, err return nil, err
} }
var reviewHookType HookEventType
switch opts.Type {
case ReviewTypeApprove:
reviewHookType = HookEventPullRequestApproved
case ReviewTypeComment:
reviewHookType = HookEventPullRequestComment
case ReviewTypeReject:
reviewHookType = HookEventPullRequestRejected
default:
// unsupported review webhook type here
return review, nil
}
pr := opts.Issue.PullRequest
if err := pr.LoadIssue(); err != nil {
return nil, err
}
mode, err := AccessLevel(opts.Issue.Poster, opts.Issue.Repo)
if err != nil {
return nil, err
}
if err := PrepareWebhooks(opts.Issue.Repo, reviewHookType, &api.PullRequestPayload{
Action: api.HookIssueSynchronized,
Index: opts.Issue.Index,
PullRequest: pr.APIFormat(),
Repository: opts.Issue.Repo.APIFormat(mode),
Sender: opts.Reviewer.APIFormat(),
}); err != nil {
return nil, err
}
go HookQueue.Add(opts.Issue.Repo.ID)
return review, nil return review, nil
} }

57
modules/pull/review.go Normal file
View file

@ -0,0 +1,57 @@
// Copyright 2019 The Gitea Authors.
// All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package pull
import (
"code.gitea.io/gitea/models"
api "code.gitea.io/gitea/modules/structs"
)
// CreateReview creates a new review based on opts
func CreateReview(opts models.CreateReviewOptions) (*models.Review, error) {
review, err := models.CreateReview(opts)
if err != nil {
return nil, err
}
var reviewHookType models.HookEventType
switch opts.Type {
case models.ReviewTypeApprove:
reviewHookType = models.HookEventPullRequestApproved
case models.ReviewTypeComment:
reviewHookType = models.HookEventPullRequestComment
case models.ReviewTypeReject:
reviewHookType = models.HookEventPullRequestRejected
default:
// unsupported review webhook type here
return review, nil
}
pr := opts.Issue.PullRequest
if err := pr.LoadIssue(); err != nil {
return nil, err
}
mode, err := models.AccessLevel(opts.Issue.Poster, opts.Issue.Repo)
if err != nil {
return nil, err
}
if err := models.PrepareWebhooks(opts.Issue.Repo, reviewHookType, &api.PullRequestPayload{
Action: api.HookIssueSynchronized,
Index: opts.Issue.Index,
PullRequest: pr.APIFormat(),
Repository: opts.Issue.Repo.APIFormat(mode),
Sender: opts.Reviewer.APIFormat(),
}); err != nil {
return nil, err
}
go models.HookQueue.Add(opts.Issue.Repo.ID)
return review, nil
}

View file

@ -12,6 +12,7 @@ import (
"code.gitea.io/gitea/modules/context" "code.gitea.io/gitea/modules/context"
"code.gitea.io/gitea/modules/log" "code.gitea.io/gitea/modules/log"
"code.gitea.io/gitea/modules/notification" "code.gitea.io/gitea/modules/notification"
pull_service "code.gitea.io/gitea/modules/pull"
) )
// CreateCodeComment will create a code comment including an pending review if required // CreateCodeComment will create a code comment including an pending review if required
@ -53,7 +54,7 @@ func CreateCodeComment(ctx *context.Context, form auth.CodeCommentForm) {
} }
// No pending review exists // No pending review exists
// Create a new pending review for this issue & user // Create a new pending review for this issue & user
if review, err = models.CreateReview(models.CreateReviewOptions{ if review, err = pull_service.CreateReview(models.CreateReviewOptions{
Type: models.ReviewTypePending, Type: models.ReviewTypePending,
Reviewer: ctx.User, Reviewer: ctx.User,
Issue: issue, Issue: issue,
@ -61,6 +62,7 @@ func CreateCodeComment(ctx *context.Context, form auth.CodeCommentForm) {
ctx.ServerError("CreateCodeComment", err) ctx.ServerError("CreateCodeComment", err)
return return
} }
} }
} }
if review.ID == 0 { if review.ID == 0 {