From f5d165baae9f43864eba62fba404a5598cc0a6de Mon Sep 17 00:00:00 2001 From: mika kuns Date: Tue, 9 Jun 2026 10:15:42 +0200 Subject: [PATCH] fix(data): drop unique index on lists.name (allow duplicate list names) The startup-race hardening added a global unique index on lists.name, but duplicate list names are legitimate and the index broke 8 Worker tests that seed same-named lists. The seeder race is already handled by the atomic INSERT...WHERE NOT EXISTS, so the index is redundant. Keep the de-dup migration step, remove the unique index from config, migration and model snapshot. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../Configuration/ListEntityConfiguration.cs | 1 - .../Migrations/20260609000000_UniqueListName.Designer.cs | 4 ---- .../Migrations/20260609000000_UniqueListName.cs | 9 --------- .../Migrations/ClaudeDoDbContextModelSnapshot.cs | 4 ---- 4 files changed, 18 deletions(-) diff --git a/src/ClaudeDo.Data/Configuration/ListEntityConfiguration.cs b/src/ClaudeDo.Data/Configuration/ListEntityConfiguration.cs index 61e727b..cd48beb 100644 --- a/src/ClaudeDo.Data/Configuration/ListEntityConfiguration.cs +++ b/src/ClaudeDo.Data/Configuration/ListEntityConfiguration.cs @@ -19,7 +19,6 @@ public class ListEntityConfiguration : IEntityTypeConfiguration builder.Property(l => l.SortOrder).HasColumnName("sort_order").IsRequired().HasDefaultValue(0); builder.HasIndex(l => l.SortOrder).HasDatabaseName("idx_lists_sort"); - builder.HasIndex(l => l.Name).IsUnique().HasDatabaseName("idx_lists_name"); builder.HasOne(l => l.Config) .WithOne(c => c.List) diff --git a/src/ClaudeDo.Data/Migrations/20260609000000_UniqueListName.Designer.cs b/src/ClaudeDo.Data/Migrations/20260609000000_UniqueListName.Designer.cs index da3dd8c..1477084 100644 --- a/src/ClaudeDo.Data/Migrations/20260609000000_UniqueListName.Designer.cs +++ b/src/ClaudeDo.Data/Migrations/20260609000000_UniqueListName.Designer.cs @@ -214,10 +214,6 @@ namespace ClaudeDo.Data.Migrations b.HasKey("Id"); - b.HasIndex("Name") - .IsUnique() - .HasDatabaseName("idx_lists_name"); - b.HasIndex("SortOrder") .HasDatabaseName("idx_lists_sort"); diff --git a/src/ClaudeDo.Data/Migrations/20260609000000_UniqueListName.cs b/src/ClaudeDo.Data/Migrations/20260609000000_UniqueListName.cs index 4043129..a687b8e 100644 --- a/src/ClaudeDo.Data/Migrations/20260609000000_UniqueListName.cs +++ b/src/ClaudeDo.Data/Migrations/20260609000000_UniqueListName.cs @@ -20,20 +20,11 @@ namespace ClaudeDo.Data.Migrations SELECT MIN(l2.rowid) FROM lists l2 WHERE l2.name = lists.name ) """); - - migrationBuilder.CreateIndex( - name: "idx_lists_name", - table: "lists", - column: "name", - unique: true); } /// protected override void Down(MigrationBuilder migrationBuilder) { - migrationBuilder.DropIndex( - name: "idx_lists_name", - table: "lists"); } } } diff --git a/src/ClaudeDo.Data/Migrations/ClaudeDoDbContextModelSnapshot.cs b/src/ClaudeDo.Data/Migrations/ClaudeDoDbContextModelSnapshot.cs index c05211b..c0f5a11 100644 --- a/src/ClaudeDo.Data/Migrations/ClaudeDoDbContextModelSnapshot.cs +++ b/src/ClaudeDo.Data/Migrations/ClaudeDoDbContextModelSnapshot.cs @@ -211,10 +211,6 @@ namespace ClaudeDo.Data.Migrations b.HasKey("Id"); - b.HasIndex("Name") - .IsUnique() - .HasDatabaseName("idx_lists_name"); - b.HasIndex("SortOrder") .HasDatabaseName("idx_lists_sort");