Skip to content

Commit 08e19fd

Browse files
committed
add applyProjectCondition function
1 parent 90faea0 commit 08e19fd

File tree

3 files changed

+14
-11
lines changed

3 files changed

+14
-11
lines changed

models/issues/issue_search.go

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,17 @@ 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+
}
176+
if opts.ProjectID == db.NoConditionID { // show those that are in no project
177+
sess.And(builder.NotIn("issue.id", builder.Select("issue_id").From("project_issue").And(builder.Neq{"project_id": 0})))
178+
}
179+
return sess
180+
}
181+
171182
func applyRepoConditions(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
172183
if len(opts.RepoIDs) == 1 {
173184
opts.RepoCond = builder.Eq{"issue.repo_id": opts.RepoIDs[0]}
@@ -226,12 +237,7 @@ func applyConditions(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
226237
sess.And(builder.Lte{"issue.updated_unix": opts.UpdatedBeforeUnix})
227238
}
228239

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-
}
240+
applyProjectCondition(sess, opts)
235241

236242
if opts.ProjectBoardID != 0 {
237243
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: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ func ToSearchOptions(keyword string, opts *issues_model.IssuesOptions) *SearchOp
1717
IsClosed: opts.IsClosed,
1818
}
1919

20-
if opts.ProjectID > 0 {
20+
if opts.ProjectID != 0 {
2121
searchOpt.ProjectID = &opts.ProjectID
2222
}
2323

0 commit comments

Comments
 (0)