mirror of
https://github.com/go-gitea/gitea.git
synced 2024-11-04 08:17:24 -05:00
update getNextSorting logic
Signed-off-by: a1012112796 <1012112796@qq.com>
This commit is contained in:
parent
ae9d6292f1
commit
a824db0d8b
@ -58,7 +58,7 @@ func (Column) TableName() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NumIssues return counter of all issues assigned to the column
|
// NumIssues return counter of all issues assigned to the column
|
||||||
func (c *Column) NumIssues(ctx context.Context) (int64, error) {
|
func (c *Column) NumIssues(ctx context.Context) int {
|
||||||
total, err := db.GetEngine(ctx).Table("project_issue").
|
total, err := db.GetEngine(ctx).Table("project_issue").
|
||||||
Where("project_id=?", c.ProjectID).
|
Where("project_id=?", c.ProjectID).
|
||||||
And("project_board_id=?", c.ID).
|
And("project_board_id=?", c.ID).
|
||||||
@ -66,9 +66,9 @@ func (c *Column) NumIssues(ctx context.Context) (int64, error) {
|
|||||||
Cols("issue_id").
|
Cols("issue_id").
|
||||||
Count()
|
Count()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, err
|
return 0
|
||||||
}
|
}
|
||||||
return total, nil
|
return int(total)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Column) GetIssues(ctx context.Context) ([]*ProjectIssue, error) {
|
func (c *Column) GetIssues(ctx context.Context) ([]*ProjectIssue, error) {
|
||||||
|
@ -147,24 +147,38 @@ func MoveIssuesOnProjectColumn(ctx context.Context, column *Column, sortedIssueI
|
|||||||
}
|
}
|
||||||
|
|
||||||
func MoveIssueToColumnTail(ctx context.Context, issue *ProjectIssue, toColumn *Column) error {
|
func MoveIssueToColumnTail(ctx context.Context, issue *ProjectIssue, toColumn *Column) error {
|
||||||
ctx, committer, err := db.TxContext(ctx)
|
nextSorting, err := toColumn.getNextSorting(ctx)
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
defer committer.Close()
|
|
||||||
|
|
||||||
num, err := toColumn.NumIssues(ctx)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return db.WithTx(ctx, func(ctx context.Context) error {
|
||||||
_, err = db.GetEngine(ctx).Exec("UPDATE `project_issue` SET project_board_id=?, sorting=? WHERE issue_id=?",
|
_, err = db.GetEngine(ctx).Exec("UPDATE `project_issue` SET project_board_id=?, sorting=? WHERE issue_id=?",
|
||||||
toColumn.ID, num, issue.IssueID)
|
toColumn.ID, nextSorting, issue.IssueID)
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *Column) getNextSorting(ctx context.Context) (int64, error) {
|
||||||
|
res := struct {
|
||||||
|
MaxSorting int64
|
||||||
|
IssueCount int64
|
||||||
|
}{}
|
||||||
|
|
||||||
|
if _, err := db.GetEngine(ctx).Select("max(sorting) as max_sorting, count(*) as issue_count").
|
||||||
|
Table("project_issue").
|
||||||
|
Where("project_id=?", c.ProjectID).
|
||||||
|
And("project_board_id=?", c.ID).
|
||||||
|
Get(&res); err != nil {
|
||||||
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return committer.Commit()
|
if res.IssueCount > 0 {
|
||||||
|
return res.MaxSorting + 1, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Column) moveIssuesToAnotherColumn(ctx context.Context, newColumn *Column) error {
|
func (c *Column) moveIssuesToAnotherColumn(ctx context.Context, newColumn *Column) error {
|
||||||
@ -176,15 +190,8 @@ func (c *Column) moveIssuesToAnotherColumn(ctx context.Context, newColumn *Colum
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
res := struct {
|
nextSorting, err := newColumn.getNextSorting(ctx)
|
||||||
MaxSorting int64
|
if err != nil {
|
||||||
IssueCount int64
|
|
||||||
}{}
|
|
||||||
if _, err := db.GetEngine(ctx).Select("max(sorting) as max_sorting, count(*) as issue_count").
|
|
||||||
Table("project_issue").
|
|
||||||
Where("project_id=?", newColumn.ProjectID).
|
|
||||||
And("project_board_id=?", newColumn.ID).
|
|
||||||
Get(&res); err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -196,7 +203,6 @@ func (c *Column) moveIssuesToAnotherColumn(ctx context.Context, newColumn *Colum
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
nextSorting := util.Iif(res.IssueCount > 0, res.MaxSorting+1, 0)
|
|
||||||
return db.WithTx(ctx, func(ctx context.Context) error {
|
return db.WithTx(ctx, func(ctx context.Context) error {
|
||||||
for i, issue := range issues {
|
for i, issue := range issues {
|
||||||
issue.ProjectColumnID = newColumn.ID
|
issue.ProjectColumnID = newColumn.ID
|
||||||
|
Loading…
Reference in New Issue
Block a user