forked from forgejo/forgejo
Add GetCurrentReview to simplify fetching current review
Signed-off-by: Jonas Franz <info@jonasfranz.software>
This commit is contained in:
parent
4ad563d66f
commit
17af2d17be
2 changed files with 28 additions and 12 deletions
|
@ -6,6 +6,7 @@ package models
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"code.gitea.io/gitea/modules/util"
|
"code.gitea.io/gitea/modules/util"
|
||||||
|
|
||||||
"github.com/go-xorm/builder"
|
"github.com/go-xorm/builder"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -156,3 +157,23 @@ func createReview(e Engine, opts CreateReviewOptions) (*Review, error) {
|
||||||
func CreateReview(opts CreateReviewOptions) (*Review, error) {
|
func CreateReview(opts CreateReviewOptions) (*Review, error) {
|
||||||
return createReview(x, opts)
|
return createReview(x, opts)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getCurrentReview(e Engine, reviewer *User, issue *Issue) (*Review, error) {
|
||||||
|
reviews, err := findReviews(e, FindReviewOptions{
|
||||||
|
Type: ReviewTypePending,
|
||||||
|
IssueID: issue.ID,
|
||||||
|
ReviewerID: reviewer.ID,
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
if len(reviews) == 0 {
|
||||||
|
return nil, ErrReviewNotExist{}
|
||||||
|
}
|
||||||
|
return reviews[0], nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetCurrentReview returns the current pending review of reviewer for given issue
|
||||||
|
func GetCurrentReview(reviewer *User, issue *Issue) (*Review, error) {
|
||||||
|
return getCurrentReview(x, reviewer, issue)
|
||||||
|
}
|
||||||
|
|
|
@ -45,17 +45,14 @@ func CreateCodeComment(ctx *context.Context, form auth.CodeCommentForm) {
|
||||||
|
|
||||||
review := new(models.Review)
|
review := new(models.Review)
|
||||||
if form.IsReview {
|
if form.IsReview {
|
||||||
|
var err error
|
||||||
// Check if the user has already a pending review for this issue
|
// Check if the user has already a pending review for this issue
|
||||||
reviews, err := models.FindReviews(models.FindReviewOptions{
|
if review, err = models.GetCurrentReview(ctx.User, issue); err != nil {
|
||||||
ReviewerID: ctx.User.ID,
|
if !models.IsErrReviewNotExist(err) {
|
||||||
IssueID: issue.ID,
|
|
||||||
Type: models.ReviewTypePending,
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
ctx.ServerError("CreateCodeComment", err)
|
ctx.ServerError("CreateCodeComment", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if len(reviews) == 0 {
|
// 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 = models.CreateReview(models.CreateReviewOptions{
|
||||||
Type: models.ReviewTypePending,
|
Type: models.ReviewTypePending,
|
||||||
|
@ -65,8 +62,6 @@ func CreateCodeComment(ctx *context.Context, form auth.CodeCommentForm) {
|
||||||
ctx.ServerError("CreateCodeComment", err)
|
ctx.ServerError("CreateCodeComment", err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
review = reviews[0]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue