mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-04 00:01:16 -04:00
Compare commits
2 Commits
9816ed56d2
...
d199fb04b9
Author | SHA1 | Date | |
---|---|---|---|
|
d199fb04b9 | ||
|
963df7d669 |
@ -157,11 +157,6 @@ func NewColumn(ctx context.Context, column *Column) error {
|
|||||||
// DeleteColumnByID removes all issues references to the project column.
|
// DeleteColumnByID removes all issues references to the project column.
|
||||||
func DeleteColumnByID(ctx context.Context, columnID int64) error {
|
func DeleteColumnByID(ctx context.Context, columnID int64) error {
|
||||||
return db.WithTx(ctx, func(ctx context.Context) error {
|
return db.WithTx(ctx, func(ctx context.Context) error {
|
||||||
return deleteColumnByID(ctx, columnID)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func deleteColumnByID(ctx context.Context, columnID int64) error {
|
|
||||||
column, err := GetColumn(ctx, columnID)
|
column, err := GetColumn(ctx, columnID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if IsErrProjectColumnNotExist(err) {
|
if IsErrProjectColumnNotExist(err) {
|
||||||
@ -175,24 +170,39 @@ func deleteColumnByID(ctx context.Context, columnID int64) error {
|
|||||||
return errors.New("deleteColumnByID: cannot delete default column")
|
return errors.New("deleteColumnByID: cannot delete default column")
|
||||||
}
|
}
|
||||||
|
|
||||||
// move all issues to the default column
|
var numColumns int64
|
||||||
|
if _, err := db.GetEngine(ctx).Table("project_board").
|
||||||
|
Where("project_id=?", column.ProjectID).Count(&numColumns); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// last column with issues cannot be deleted
|
||||||
|
if column.NumIssues > 0 && numColumns <= 1 {
|
||||||
|
return errors.New("deleteColumnByID: cannot delete last column with issues")
|
||||||
|
}
|
||||||
|
|
||||||
|
if column.NumIssues > 0 {
|
||||||
project, err := GetProjectByID(ctx, column.ProjectID)
|
project, err := GetProjectByID(ctx, column.ProjectID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
defaultColumn, err := project.MustDefaultColumn(ctx)
|
|
||||||
|
defaultColumn, err := project.getDefaultColumn(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// move all issues to the default column
|
||||||
if err = column.moveIssuesToAnotherColumn(ctx, defaultColumn); err != nil {
|
if err = column.moveIssuesToAnotherColumn(ctx, defaultColumn); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if _, err := db.GetEngine(ctx).ID(column.ID).NoAutoCondition().Delete(column); err != nil {
|
if _, err := db.GetEngine(ctx).ID(column.ID).NoAutoCondition().Delete(column); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
func deleteColumnByProjectID(ctx context.Context, projectID int64) error {
|
func deleteColumnByProjectID(ctx context.Context, projectID int64) error {
|
||||||
@ -261,6 +271,20 @@ func (p *Project) getDefaultColumn(ctx context.Context) (*Column, error) {
|
|||||||
return nil, ErrProjectColumnNotExist{ColumnID: 0}
|
return nil, ErrProjectColumnNotExist{ColumnID: 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *Project) createDefaultColumn(ctx context.Context) (*Column, error) {
|
||||||
|
// create a default column if none is found
|
||||||
|
column := Column{
|
||||||
|
ProjectID: p.ID,
|
||||||
|
Default: true,
|
||||||
|
Title: "Uncategorized",
|
||||||
|
CreatorID: p.CreatorID,
|
||||||
|
}
|
||||||
|
if _, err := db.GetEngine(ctx).Insert(&column); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return &column, nil
|
||||||
|
}
|
||||||
|
|
||||||
// MustDefaultColumn returns the default column for a project.
|
// MustDefaultColumn returns the default column for a project.
|
||||||
// If one exists, it is returned
|
// If one exists, it is returned
|
||||||
// If none exists, the first column will be elevated to the default column of this project
|
// If none exists, the first column will be elevated to the default column of this project
|
||||||
@ -286,17 +310,7 @@ func (p *Project) MustDefaultColumn(ctx context.Context) (*Column, error) {
|
|||||||
return &column, nil
|
return &column, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// create a default column if none is found
|
return p.createDefaultColumn(ctx)
|
||||||
column = Column{
|
|
||||||
ProjectID: p.ID,
|
|
||||||
Default: true,
|
|
||||||
Title: "Uncategorized",
|
|
||||||
CreatorID: p.CreatorID,
|
|
||||||
}
|
|
||||||
if _, err := db.GetEngine(ctx).Insert(&column); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return &column, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// SetDefaultColumn represents a column for issues not assigned to one
|
// SetDefaultColumn represents a column for issues not assigned to one
|
||||||
|
@ -100,12 +100,7 @@ func LoadIssuesFromProject(ctx context.Context, project *project_model.Project,
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
defaultColumn, err := project.MustDefaultColumn(ctx)
|
issueColumnMap, err := issues_model.LoadProjectIssueColumnMap(ctx, project.ID, 0)
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
issueColumnMap, err := issues_model.LoadProjectIssueColumnMap(ctx, project.ID, defaultColumn.ID)
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@ -113,7 +108,7 @@ func LoadIssuesFromProject(ctx context.Context, project *project_model.Project,
|
|||||||
results := make(map[int64]issues_model.IssueList)
|
results := make(map[int64]issues_model.IssueList)
|
||||||
for _, issue := range issueList {
|
for _, issue := range issueList {
|
||||||
projectColumnID, ok := issueColumnMap[issue.ID]
|
projectColumnID, ok := issueColumnMap[issue.ID]
|
||||||
if !ok {
|
if !ok || projectColumnID == 0 {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
if _, ok := results[projectColumnID]; !ok {
|
if _, ok := results[projectColumnID]; !ok {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user