Skip to content

Commit 823518f

Browse files
committed
filter dismissed via sql more & make it possible to have review requests falsly stayed in DB deleted
1 parent c7f4ca2 commit 823518f

File tree

4 files changed

+19
-7
lines changed

4 files changed

+19
-7
lines changed

models/issues/pull.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
user_model "code.gitea.io/gitea/models/user"
2121
"code.gitea.io/gitea/modules/git"
2222
"code.gitea.io/gitea/modules/log"
23+
"code.gitea.io/gitea/modules/optional"
2324
"code.gitea.io/gitea/modules/setting"
2425
"code.gitea.io/gitea/modules/timeutil"
2526
"code.gitea.io/gitea/modules/util"
@@ -401,6 +402,7 @@ func (pr *PullRequest) getReviewedByLines(ctx context.Context, writer io.Writer)
401402
Types: []ReviewType{ReviewTypeApprove},
402403
IssueID: pr.IssueID,
403404
OfficialOnly: setting.Repository.PullRequest.DefaultMergeMessageOfficialApproversOnly,
405+
Dismissed: optional.Some(true),
404406
})
405407
if err != nil {
406408
log.Error("Unable to FindReviews for PR ID %d: %v", pr.ID, err)

models/issues/review.go

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
access_model "code.gitea.io/gitea/models/perm/access"
1717
"code.gitea.io/gitea/models/unit"
1818
user_model "code.gitea.io/gitea/models/user"
19+
"code.gitea.io/gitea/modules/optional"
1920
"code.gitea.io/gitea/modules/structs"
2021
"code.gitea.io/gitea/modules/timeutil"
2122
"code.gitea.io/gitea/modules/util"
@@ -392,6 +393,7 @@ func GetCurrentReview(ctx context.Context, reviewer *user_model.User, issue *Iss
392393
Types: []ReviewType{ReviewTypePending},
393394
IssueID: issue.ID,
394395
ReviewerID: reviewer.ID,
396+
Dismissed: optional.Some(true),
395397
})
396398
if err != nil {
397399
return nil, err
@@ -534,12 +536,18 @@ func SubmitReview(ctx context.Context, doer *user_model.User, issue *Issue, revi
534536
}
535537

536538
// GetReviewByIssueIDAndUserID get the latest review of reviewer for a pull request
537-
func GetReviewByIssueIDAndUserID(ctx context.Context, issueID, userID int64) (*Review, error) {
539+
func GetReviewByIssueIDAndUserID(ctx context.Context, issueID, userID int64, dismissed ...bool) (*Review, error) {
538540
review := new(Review)
539541

540-
has, err := db.GetEngine(ctx).Where(
541-
builder.In("type", ReviewTypeApprove, ReviewTypeReject, ReviewTypeRequest).
542-
And(builder.Eq{"issue_id": issueID, "reviewer_id": userID, "original_author_id": 0})).
542+
cond := builder.In("type", ReviewTypeApprove, ReviewTypeReject, ReviewTypeRequest).
543+
And(builder.Eq{"issue_id": issueID, "reviewer_id": userID, "original_author_id": 0})
544+
545+
// apply optional filter for dismissed
546+
if len(dismissed) != 0 {
547+
cond = cond.And(builder.Eq{"dismissed": dismissed[0]})
548+
}
549+
550+
has, err := db.GetEngine(ctx).Where(cond).
543551
Desc("id").
544552
Get(review)
545553
if err != nil {
@@ -731,7 +739,7 @@ func RemoveReviewRequest(ctx context.Context, issue *Issue, reviewer, doer *user
731739
}
732740
defer committer.Close()
733741

734-
review, err := GetReviewByIssueIDAndUserID(ctx, issue.ID, reviewer.ID)
742+
review, err := GetReviewByIssueIDAndUserID(ctx, issue.ID, reviewer.ID, false)
735743
if err != nil && !IsErrReviewNotExist(err) {
736744
return nil, err
737745
}

models/issues/review_list.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ func GetReviewsByIssueID(ctx context.Context, issueID int64) (latestReviews, mig
163163
reviews := make([]*Review, 0, 10)
164164

165165
// Get all reviews for the issue id
166-
if err := db.GetEngine(ctx).Where("issue_id=?", issueID).OrderBy("updated_unix ASC").Find(&reviews); err != nil {
166+
if err := db.GetEngine(ctx).Where("issue_id=? AND dismissed=?", issueID, false).OrderBy("updated_unix ASC").Find(&reviews); err != nil {
167167
return nil, nil, err
168168
}
169169

@@ -175,7 +175,7 @@ func GetReviewsByIssueID(ctx context.Context, issueID int64) (latestReviews, mig
175175
reviewTeamsMap := make(map[int64][]*Review) // key is reviewer team id
176176
countedReivewTypes := []ReviewType{ReviewTypeApprove, ReviewTypeReject, ReviewTypeRequest}
177177
for _, review := range reviews {
178-
if review.ReviewerTeamID == 0 && slices.Contains(countedReivewTypes, review.Type) && !review.Dismissed {
178+
if review.ReviewerTeamID == 0 && slices.Contains(countedReivewTypes, review.Type) {
179179
if review.OriginalAuthorID != 0 {
180180
originalReviewersMap[review.OriginalAuthorID] = append(originalReviewersMap[review.OriginalAuthorID], review)
181181
} else {

services/pull/pull.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"code.gitea.io/gitea/modules/graceful"
3131
"code.gitea.io/gitea/modules/json"
3232
"code.gitea.io/gitea/modules/log"
33+
"code.gitea.io/gitea/modules/optional"
3334
repo_module "code.gitea.io/gitea/modules/repository"
3435
"code.gitea.io/gitea/modules/setting"
3536
"code.gitea.io/gitea/modules/util"
@@ -1102,6 +1103,7 @@ func GetPullCommits(ctx *gitea_context.Context, issue *issues_model.Issue) ([]Co
11021103
issues_model.ReviewTypeComment,
11031104
issues_model.ReviewTypeReject,
11041105
},
1106+
Dismissed: optional.Some(false),
11051107
})
11061108

11071109
if err != nil && !issues_model.IsErrReviewNotExist(err) {

0 commit comments

Comments
 (0)