Skip to content

Commit 602bb42

Browse files
lng2020silverwind
authored andcommitted
Clean some functions about project issue (go-gitea#27705)
1. remove unused function `MoveIssueAcrossProjectBoards` 2. extract the project board condition into a function 3. use db.NoCondition instead of -1. (BTW, the usage of db.NoCondition is too confusing. Is there any way to avoid that?) 4. remove the unnecessary comment since the ctx refactor is completed. 5. Change `b.ID != 0` to `b.ID > 0`. It's more intuitive but I think they're the same since board ID can't be negative.
1 parent c91cb53 commit 602bb42

File tree

3 files changed

+14
-37
lines changed

3 files changed

+14
-37
lines changed

models/issues/issue_project.go

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ func (issue *Issue) ProjectBoardID(ctx context.Context) int64 {
5151
func LoadIssuesFromBoard(ctx context.Context, b *project_model.Board) (IssueList, error) {
5252
issueList := make(IssueList, 0, 10)
5353

54-
if b.ID != 0 {
54+
if b.ID > 0 {
5555
issues, err := Issues(ctx, &IssuesOptions{
5656
ProjectBoardID: b.ID,
5757
ProjectID: b.ProjectID,
@@ -65,7 +65,7 @@ func LoadIssuesFromBoard(ctx context.Context, b *project_model.Board) (IssueList
6565

6666
if b.Default {
6767
issues, err := Issues(ctx, &IssuesOptions{
68-
ProjectBoardID: -1, // Issues without ProjectBoardID
68+
ProjectBoardID: db.NoConditionID,
6969
ProjectID: b.ProjectID,
7070
SortType: "project-column-sorting",
7171
})
@@ -150,30 +150,3 @@ func addUpdateIssueProject(ctx context.Context, issue *Issue, doer *user_model.U
150150
ProjectID: newProjectID,
151151
})
152152
}
153-
154-
// MoveIssueAcrossProjectBoards move a card from one board to another
155-
func MoveIssueAcrossProjectBoards(ctx context.Context, issue *Issue, board *project_model.Board) error {
156-
ctx, committer, err := db.TxContext(ctx)
157-
if err != nil {
158-
return err
159-
}
160-
defer committer.Close()
161-
sess := db.GetEngine(ctx)
162-
163-
var pis project_model.ProjectIssue
164-
has, err := sess.Where("issue_id=?", issue.ID).Get(&pis)
165-
if err != nil {
166-
return err
167-
}
168-
169-
if !has {
170-
return fmt.Errorf("issue has to be added to a project first")
171-
}
172-
173-
pis.ProjectBoardID = board.ID
174-
if _, err := sess.ID(pis.ID).Cols("project_board_id").Update(&pis); err != nil {
175-
return err
176-
}
177-
178-
return committer.Commit()
179-
}

models/issues/issue_search.go

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,17 @@ func applyProjectCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.Sessio
180180
return sess
181181
}
182182

183+
func applyProjectBoardCondition(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
184+
// opts.ProjectBoardID == 0 means all project boards,
185+
// do not need to apply any condition
186+
if opts.ProjectBoardID > 0 {
187+
sess.In("issue.id", builder.Select("issue_id").From("project_issue").Where(builder.Eq{"project_board_id": opts.ProjectBoardID}))
188+
} else if opts.ProjectBoardID == db.NoConditionID {
189+
sess.In("issue.id", builder.Select("issue_id").From("project_issue").Where(builder.Neq{"project_board_id": 0}))
190+
}
191+
return sess
192+
}
193+
183194
func applyRepoConditions(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
184195
if len(opts.RepoIDs) == 1 {
185196
opts.RepoCond = builder.Eq{"issue.repo_id": opts.RepoIDs[0]}
@@ -240,13 +251,7 @@ func applyConditions(sess *xorm.Session, opts *IssuesOptions) *xorm.Session {
240251

241252
applyProjectCondition(sess, opts)
242253

243-
if opts.ProjectBoardID != 0 {
244-
if opts.ProjectBoardID > 0 {
245-
sess.In("issue.id", builder.Select("issue_id").From("project_issue").Where(builder.Eq{"project_board_id": opts.ProjectBoardID}))
246-
} else {
247-
sess.In("issue.id", builder.Select("issue_id").From("project_issue").Where(builder.Eq{"project_board_id": 0}))
248-
}
249-
}
254+
applyProjectBoardCondition(sess, opts)
250255

251256
switch opts.IsPull {
252257
case util.OptionalBoolTrue:

modules/indexer/issues/db/options.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,6 @@ func ToDBOptions(ctx context.Context, options *internal.SearchOptions) (*issue_m
9696
}
9797

9898
if len(options.IncludedLabelIDs) == 0 && len(options.IncludedAnyLabelIDs) > 0 {
99-
_ = ctx // issue_model.GetLabelsByIDs should be called with ctx, this line can be removed when it's done.
10099
labels, err := issue_model.GetLabelsByIDs(ctx, options.IncludedAnyLabelIDs, "name")
101100
if err != nil {
102101
return nil, fmt.Errorf("GetLabelsByIDs: %v", err)

0 commit comments

Comments
 (0)