mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-11-03 08:02:36 +09:00 
			
		
		
		
	Add GetCurrentReview to simplify fetching current review
Signed-off-by: Jonas Franz <info@jonasfranz.software>
This commit is contained in:
		@@ -6,6 +6,7 @@ package models
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"code.gitea.io/gitea/modules/util"
 | 
			
		||||
 | 
			
		||||
	"github.com/go-xorm/builder"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@@ -156,3 +157,23 @@ func createReview(e Engine, opts CreateReviewOptions) (*Review, error) {
 | 
			
		||||
func CreateReview(opts CreateReviewOptions) (*Review, error) {
 | 
			
		||||
	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)
 | 
			
		||||
	if form.IsReview {
 | 
			
		||||
		var err error
 | 
			
		||||
		// Check if the user has already a pending review for this issue
 | 
			
		||||
		reviews, err := models.FindReviews(models.FindReviewOptions{
 | 
			
		||||
			ReviewerID: ctx.User.ID,
 | 
			
		||||
			IssueID:    issue.ID,
 | 
			
		||||
			Type:       models.ReviewTypePending,
 | 
			
		||||
		})
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			ctx.ServerError("CreateCodeComment", err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		if len(reviews) == 0 {
 | 
			
		||||
		if review, err = models.GetCurrentReview(ctx.User, issue); err != nil {
 | 
			
		||||
			if !models.IsErrReviewNotExist(err) {
 | 
			
		||||
				ctx.ServerError("CreateCodeComment", err)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
			// No pending review exists
 | 
			
		||||
			// Create a new pending review for this issue & user
 | 
			
		||||
			if review, err = models.CreateReview(models.CreateReviewOptions{
 | 
			
		||||
				Type:     models.ReviewTypePending,
 | 
			
		||||
@@ -65,8 +62,6 @@ func CreateCodeComment(ctx *context.Context, form auth.CodeCommentForm) {
 | 
			
		||||
				ctx.ServerError("CreateCodeComment", err)
 | 
			
		||||
				return
 | 
			
		||||
			}
 | 
			
		||||
		} else {
 | 
			
		||||
			review = reviews[0]
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user