Skip to content

Commit 0e74fc4

Browse files
CaiCandongGiteaBot
andauthored
1 parent 7f8028e commit 0e74fc4

File tree

3 files changed

+18
-10
lines changed

3 files changed

+18
-10
lines changed

models/issues/issue_search.go

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,18 @@ func applyMilestoneCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.Sess
168168
return sess
169169
}
170170

171+
func applyProjectCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
172+
if opts.ProjectID > 0 { // specific project
173+
sess.Join("INNER", "project_issue", "issue.id = project_issue.issue_id").
174+
And("project_issue.project_id=?", opts.ProjectID)
175+
} else if opts.ProjectID == db.NoConditionID { // show those that are in no project
176+
sess.And(builder.NotIn("issue.id", builder.Select("issue_id").From("project_issue").And(builder.Neq{"project_id": 0})))
177+
}
178+
// opts.ProjectID == 0 means all projects,
179+
// do not need to apply any condition
180+
return sess
181+
}
182+
171183
func applyRepoConditions(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
172184
if len(opts.RepoIDs) == 1 {
173185
opts.RepoCond = builder.Eq{"issue.repo_id": opts.RepoIDs[0]}
@@ -226,12 +238,7 @@ func applyConditions(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
226238
sess.And(builder.Lte{"issue.updated_unix": opts.UpdatedBeforeUnix})
227239
}
228240

229-
if opts.ProjectID > 0 {
230-
sess.Join("INNER", "project_issue", "issue.id = project_issue.issue_id").
231-
And("project_issue.project_id=?", opts.ProjectID)
232-
} else if opts.ProjectID == db.NoConditionID { // show those that are in no project
233-
sess.And(builder.NotIn("issue.id", builder.Select("issue_id").From("project_issue")))
234-
}
241+
applyProjectCondition(sess, opts)
235242

236243
if opts.ProjectBoardID != 0 {
237244
if opts.ProjectBoardID > 0 {

models/issues/issue_stats.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,7 @@ func getIssueStatsChunk(opts *IssuesOptions, issueIDs []int64) (*IssueStats, err
133133

134134
applyMilestoneCondition(sess, opts)
135135

136-
if opts.ProjectID > 0 {
137-
sess.Join("INNER", "project_issue", "issue.id = project_issue.issue_id").
138-
And("project_issue.project_id=?", opts.ProjectID)
139-
}
136+
applyProjectCondition(sess, opts)
140137

141138
if opts.AssigneeID > 0 {
142139
applyAssigneeCondition(sess, opts.AssigneeID)

modules/indexer/issues/dboptions.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@ func ToSearchOptions(keyword string, opts *issues_model.IssuesOptions) *SearchOp
1717
IsClosed: opts.IsClosed,
1818
}
1919

20+
if opts.ProjectID != 0 {
21+
searchOpt.ProjectID = &opts.ProjectID
22+
}
23+
2024
if len(opts.LabelIDs) == 1 && opts.LabelIDs[0] == 0 {
2125
searchOpt.NoLabelOnly = true
2226
} else {

0 commit comments

Comments
 (0)