]> source.dussan.org Git - gitea.git/commitdiff
Properly filter issue list given no assignees filter (#31522) (#31685)
authorGiteabot <teabot@gitea.io>
Wed, 24 Jul 2024 07:55:21 +0000 (15:55 +0800)
committerGitHub <noreply@github.com>
Wed, 24 Jul 2024 07:55:21 +0000 (15:55 +0800)
Backport #31522 by @kemzeb

Quick fix #31520. This issue is related to #31337.

Co-authored-by: Kemal Zebari <60799661+kemzeb@users.noreply.github.com>
modules/indexer/issues/dboptions.go
modules/indexer/issues/indexer_test.go

index c323e3588e002282039839af02b91d1454437ebe..96328455dfea0fadc0adf95b6671de11092ca3fa 100644 (file)
@@ -44,6 +44,12 @@ func ToSearchOptions(keyword string, opts *issues_model.IssuesOptions) *SearchOp
                searchOpt.ProjectID = optional.Some[int64](0) // Those issues with no project(projectid==0)
        }
 
+       if opts.AssigneeID > 0 {
+               searchOpt.AssigneeID = optional.Some(opts.AssigneeID)
+       } else if opts.AssigneeID == -1 { // FIXME: this is inconsistent from other places
+               searchOpt.AssigneeID = optional.Some[int64](0)
+       }
+
        // See the comment of issues_model.SearchOptions for the reason why we need to convert
        convertID := func(id int64) optional.Option[int64] {
                if id > 0 {
@@ -57,7 +63,6 @@ func ToSearchOptions(keyword string, opts *issues_model.IssuesOptions) *SearchOp
 
        searchOpt.ProjectBoardID = convertID(opts.ProjectBoardID)
        searchOpt.PosterID = convertID(opts.PosterID)
-       searchOpt.AssigneeID = convertID(opts.AssigneeID)
        searchOpt.MentionID = convertID(opts.MentionedID)
        searchOpt.ReviewedID = convertID(opts.ReviewedID)
        searchOpt.ReviewRequestedID = convertID(opts.ReviewRequestedID)
index 0d0cfc851697d7e635e7c1177cad60213135bfb5..378616ce63c455e9cc65f5debd8157e9c5d0daae 100644 (file)
@@ -8,6 +8,7 @@ import (
        "testing"
 
        "code.gitea.io/gitea/models/db"
+       "code.gitea.io/gitea/models/issues"
        "code.gitea.io/gitea/models/unittest"
        "code.gitea.io/gitea/modules/indexer/issues/internal"
        "code.gitea.io/gitea/modules/optional"
@@ -150,6 +151,11 @@ func searchIssueByID(t *testing.T) {
                        },
                        expectedIDs: []int64{6, 1},
                },
+               {
+                       // NOTE: This tests no assignees filtering and also ToSearchOptions() to ensure it will set AssigneeID to 0 when it is passed as -1.
+                       opts:        *ToSearchOptions("", &issues.IssuesOptions{AssigneeID: -1}),
+                       expectedIDs: []int64{22, 21, 16, 15, 14, 13, 12, 11, 20, 5, 19, 18, 10, 7, 4, 9, 8, 3, 2},
+               },
                {
                        opts: SearchOptions{
                                MentionID: optional.Some(int64(4)),