shoc-backend/Data.SeaHavenIndustries/Migrations/20260820150000_SH247_CanonicalTradeTaxonomy.cs
2026-08-20 11:44:07 -03:00

84 lines
3.8 KiB
C#

using Data.SeaHavenIndustries;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace Data.SeaHavenIndustries.Migrations
{
/// <summary>
/// Replaces SH-249's provisional prototype vocabulary with the 14-item
/// client-confirmed taxonomy recorded in SH-247.
/// </summary>
[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 });
}
}
}