From e40877cca103af180125c08f53d5b7a6a37f207c Mon Sep 17 00:00:00 2001 From: kolaente Date: Tue, 7 Apr 2026 13:58:31 +0200 Subject: [PATCH] fix(migration): delete all default buckets when migration provides its own Previously only the "To-Do" default bucket was deleted, leaving "Doing" and "Done" as duplicates alongside migration-provided buckets. Now all default-created buckets are removed when migration data already provides bucket assignments for all tasks. --- .../migration/create_from_structure.go | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/pkg/modules/migration/create_from_structure.go b/pkg/modules/migration/create_from_structure.go index 33b5f9a23..17d722dd2 100644 --- a/pkg/modules/migration/create_from_structure.go +++ b/pkg/modules/migration/create_from_structure.go @@ -466,7 +466,8 @@ func createProjectWithEverything(s *xorm.Session, project *models.ProjectWithTas } } - // All tasks brought their own bucket with them, therefore the newly created default bucket is just extra space + // All tasks brought their own bucket with them, therefore the newly created default buckets are just extra space. + // Delete all default-created buckets ("To-Do", "Doing", "Done") that were auto-generated. if !needsDefaultBucket { b := &models.Bucket{ProjectID: project.ID} @@ -482,17 +483,21 @@ func createProjectWithEverything(s *xorm.Session, project *models.ProjectWithTas return err } buckets := bucketsIn.([]*models.Bucket) - var newBacklogBucket *models.Bucket - for _, b := range buckets { - if b.Title == "To-Do" { - newBacklogBucket = b - newBacklogBucket.ProjectID = project.ID - break - } + + migrationBucketIDs := make(map[int64]bool) + for _, mb := range bucketsByOldID { + migrationBucketIDs[mb.ID] = true } - err = newBacklogBucket.Delete(s, user) - if err != nil && !models.IsErrCannotRemoveLastBucket(err) { - return err + + for _, b := range buckets { + if migrationBucketIDs[b.ID] { + continue + } + b.ProjectID = project.ID + err = b.Delete(s, user) + if err != nil && !models.IsErrCannotRemoveLastBucket(err) { + return err + } } }