using Data.SeaHavenIndustries; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; #nullable disable namespace Data.SeaHavenIndustries.Migrations { /// /// Replaces SH-249's provisional prototype vocabulary with the 14-item /// client-confirmed taxonomy recorded in SH-247. /// [DbContext(typeof(ApplicationDbContext))] [Migration("20260820150000_SH247_CanonicalTradeTaxonomy")] public partial class SH247_CanonicalTradeTaxonomy : Migration { protected override void Up(MigrationBuilder migrationBuilder) { UpdateTrade(migrationBuilder, 1, "Plumbing & Water Systems", 1); UpdateTrade(migrationBuilder, 2, "Electrical", 2); UpdateTrade(migrationBuilder, 3, "Doors & Docks", 3); UpdateTrade(migrationBuilder, 4, "Fire & Life Safety", 4); UpdateTrade(migrationBuilder, 5, "Security & Locksmith", 5); UpdateTrade(migrationBuilder, 6, "HVAC", 6); UpdateTrade(migrationBuilder, 7, "Exterior & Grounds", 7); UpdateTrade(migrationBuilder, 8, "Building Envelope", 8); UpdateTrade(migrationBuilder, 9, "Interior Finishes", 9); UpdateTrade(migrationBuilder, 10, "Signage", 10); migrationBuilder.InsertData( table: "Trades", columns: new[] { "Id", "Name", "NormalizedName", "SortOrder", "IsActive" }, columnTypes: new[] { "int", "nvarchar(128)", "nvarchar(128)", "int", "bit" }, values: new object[,] { { 11, "Conveyance & MHE", "conveyance & mhe", 11, true }, { 12, "Janitorial", "janitorial", 12, true }, { 13, "Specialty", "specialty", 13, true }, { 14, "General Building & Handyman", "general building & handyman", 14, true } }); } protected override void Down(MigrationBuilder migrationBuilder) { DeleteTrade(migrationBuilder, 11); DeleteTrade(migrationBuilder, 12); DeleteTrade(migrationBuilder, 13); DeleteTrade(migrationBuilder, 14); // Free the HVAC normalized key before restoring it to row 3. UpdateTrade(migrationBuilder, 6, "Roofing", 6); UpdateTrade(migrationBuilder, 1, "Plumbing", 1); UpdateTrade(migrationBuilder, 2, "Electrical", 2); UpdateTrade(migrationBuilder, 3, "HVAC", 3); UpdateTrade(migrationBuilder, 4, "Fire/Life Safety", 4); UpdateTrade(migrationBuilder, 5, "General", 5); UpdateTrade(migrationBuilder, 7, "Janitorial", 7); UpdateTrade(migrationBuilder, 8, "Painting", 8); UpdateTrade(migrationBuilder, 9, "Locksmith", 9); UpdateTrade(migrationBuilder, 10, "Carpentry", 10); } private static void UpdateTrade(MigrationBuilder migrationBuilder, int id, string name, int sortOrder) { migrationBuilder.UpdateData( table: "Trades", keyColumns: new[] { "Id" }, keyColumnTypes: new[] { "int" }, keyValues: new object[] { id }, columns: new[] { "Name", "NormalizedName", "SortOrder", "IsActive" }, columnTypes: new[] { "nvarchar(128)", "nvarchar(128)", "int", "bit" }, values: new object[] { name, TradeCatalog.Normalize(name), sortOrder, true }); } private static void DeleteTrade(MigrationBuilder migrationBuilder, int id) { migrationBuilder.DeleteData( table: "Trades", keyColumns: new[] { "Id" }, keyColumnTypes: new[] { "int" }, keyValues: new object[] { id }); } } }