Skip to content

Commit 52e5f01

Browse files
committed
Adjust projectID to projectIDs
1 parent d00558f commit 52e5f01

File tree

6 files changed

+26
-25
lines changed

6 files changed

+26
-25
lines changed

models/db/search.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,5 +37,4 @@ const (
3737
// Which means a condition to filter the records which don't match any id.
3838
// It's different from zero which means the condition could be ignored.
3939
NoConditionID = -1
40-
NoProjectID = -1
4140
)

models/issues/issue_project.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ func (issue *Issue) ProjectColumnID(ctx context.Context) int64 {
4444
func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueList, error) {
4545
issueList, err := Issues(ctx, &IssuesOptions{
4646
ProjectColumnID: b.ID,
47-
ProjectID: b.ProjectID,
47+
ProjectIDs: []int64{b.ProjectID},
4848
SortType: "project-column-sorting",
4949
})
5050
if err != nil {
@@ -54,7 +54,7 @@ func LoadIssuesFromColumn(ctx context.Context, b *project_model.Column) (IssueLi
5454
if b.Default {
5555
issues, err := Issues(ctx, &IssuesOptions{
5656
ProjectColumnID: db.NoConditionID,
57-
ProjectID: b.ProjectID,
57+
ProjectIDs: []int64{b.ProjectID},
5858
SortType: "project-column-sorting",
5959
})
6060
if err != nil {

models/issues/issue_search.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ type IssuesOptions struct { //nolint
3232
ReviewedID int64
3333
SubscriberID int64
3434
MilestoneIDs []int64
35-
ProjectID int64
35+
ProjectIDs []int64
3636
ProjectColumnID int64
3737
IsClosed optional.Option[bool]
3838
IsPull optional.Option[bool]
@@ -158,11 +158,11 @@ func applyMilestoneCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.Sess
158158
}
159159

160160
func applyProjectCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
161-
if opts.ProjectID > 0 { // specific project
162-
sess.Join("INNER", "project_issue", "issue.id = project_issue.issue_id").
163-
And("project_issue.project_id=?", opts.ProjectID)
164-
} else if opts.ProjectID == db.NoConditionID { // show those that are in no project
161+
if len(opts.ProjectIDs) == 1 && opts.ProjectIDs[0] == db.NoConditionID { // show those that are in no project
165162
sess.And(builder.NotIn("issue.id", builder.Select("issue_id").From("project_issue").And(builder.Neq{"project_id": 0})))
163+
} else if len(opts.ProjectIDs) > 0 { // specific project
164+
sess.Join("INNER", "project_issue", "issue.id = project_issue.issue_id").
165+
In("project_issue.project_id", opts.ProjectIDs)
166166
}
167167
// opts.ProjectID == 0 means all projects,
168168
// do not need to apply any condition
@@ -174,8 +174,8 @@ func applyProjectColumnCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.
174174
// do not need to apply any condition
175175
if opts.ProjectColumnID > 0 {
176176
sess.In("issue.id", builder.Select("issue_id").From("project_issue").Where(builder.Eq{"project_board_id": opts.ProjectColumnID}))
177-
} else if opts.ProjectID > 0 {
178-
sess.In("issue.id", builder.Select("issue_id").From("project_issue").Where(builder.Eq{"project_board_id": 0, "project_id": opts.ProjectID}))
177+
} else if len(opts.ProjectIDs) > 0 {
178+
sess.In("issue.id", builder.Select("issue_id").From("project_issue").Where(builder.Eq{"project_board_id": 0}).And(builder.In("project_id", opts.ProjectIDs)))
179179
} else if opts.ProjectColumnID == db.NoConditionID {
180180
sess.In("issue.id", builder.Select("issue_id").From("project_issue").Where(builder.Eq{"project_board_id": 0}))
181181
}

modules/indexer/issues/db/options.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ func ToDBOptions(ctx context.Context, options *internal.SearchOptions) (*issue_m
6060
ReviewRequestedID: convertID(options.ReviewRequestedID),
6161
ReviewedID: convertID(options.ReviewedID),
6262
SubscriberID: convertID(options.SubscriberID),
63-
ProjectID: convertID(options.ProjectIDs),
6463
ProjectColumnID: convertID(options.ProjectColumnID),
6564
IsClosed: options.IsClosed,
6665
IsPull: options.IsPull,
@@ -84,12 +83,10 @@ func ToDBOptions(ctx context.Context, options *internal.SearchOptions) (*issue_m
8483
opts.MilestoneIDs = options.MilestoneIDs
8584
}
8685

87-
if len(options.ProjectIDs) == 1 {
88-
if options.ProjectIDs[0] == 0 {
89-
opts.ProjectID = db.NoProjectID
90-
} else {
91-
opts.ProjectID = options.ProjectIDs[0]
92-
}
86+
if len(options.ProjectIDs) == 1 && options.ProjectIDs[0] == 0 {
87+
opts.ProjectIDs = []int64{db.NoConditionID}
88+
} else {
89+
opts.ProjectIDs = options.ProjectIDs
9390
}
9491

9592
if options.NoLabelOnly {

modules/indexer/issues/dboptions.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,12 @@ func ToSearchOptions(keyword string, opts *issues_model.IssuesOptions) *SearchOp
3838
searchOpt.MilestoneIDs = opts.MilestoneIDs
3939
}
4040

41+
if len(opts.ProjectIDs) == 1 && opts.ProjectIDs[0] == db.NoConditionID {
42+
searchOpt.ProjectIDs = []int64{0}
43+
} else {
44+
searchOpt.ProjectIDs = opts.ProjectIDs
45+
}
46+
4147
// See the comment of issues_model.SearchOptions for the reason why we need to convert
4248
convertID := func(id int64) optional.Option[int64] {
4349
if id > 0 {
@@ -49,12 +55,6 @@ func ToSearchOptions(keyword string, opts *issues_model.IssuesOptions) *SearchOp
4955
return nil
5056
}
5157

52-
if opts.ProjectID == db.NoProjectID {
53-
searchOpt.ProjectIDs = []int64{0}
54-
} else {
55-
searchOpt.ProjectIDs = convertID(opts.ProjectID)
56-
}
57-
5858
searchOpt.ProjectColumnID = convertID(opts.ProjectColumnID)
5959
searchOpt.PosterID = convertID(opts.PosterID)
6060
searchOpt.AssigneeID = convertID(opts.AssigneeID)

routers/web/repo/issue.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -201,12 +201,17 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
201201
mileIDs = []int64{milestoneID}
202202
}
203203

204+
var projIDs []int64
205+
if projectID > 0 || projectID == db.NoConditionID {
206+
projIDs = []int64{projectID}
207+
}
208+
204209
var issueStats *issues_model.IssueStats
205210
statsOpts := &issues_model.IssuesOptions{
206211
RepoIDs: []int64{repo.ID},
207212
LabelIDs: labelIDs,
208213
MilestoneIDs: mileIDs,
209-
ProjectID: projectID,
214+
ProjectIDs: projIDs,
210215
AssigneeID: assigneeID,
211216
MentionedID: mentionedID,
212217
PosterID: posterID,
@@ -296,7 +301,7 @@ func issues(ctx *context.Context, milestoneID, projectID int64, isPullOption opt
296301
ReviewRequestedID: reviewRequestedID,
297302
ReviewedID: reviewedID,
298303
MilestoneIDs: mileIDs,
299-
ProjectID: projectID,
304+
ProjectIDs: projIDs,
300305
IsClosed: isShowClosed,
301306
IsPull: isPullOption,
302307
LabelIDs: labelIDs,

0 commit comments

Comments
 (0)