using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Migrations; using foodmarket.Infrastructure.Persistence; #nullable disable namespace foodmarket.Infrastructure.Persistence.Migrations { /// Phase41 — MoySkladExternalId у справочников (кроме уже имеющих у Product/ /// ProductGroup) и всех документов: нужно для идемпотентного переноса истории из /// МойСклада (ключ — id МойСклада) и сопоставления ссылок (поставщик/склад/автор). /// Текстовая колонка + индекс (OrganizationId, MoySkladExternalId). Идемпотентно. [DbContext(typeof(AppDbContext))] [Migration("20261009140000_Phase41_MoySkladExternalIdDocs")] public partial class Phase41_MoySkladExternalIdDocs : Migration { private static readonly string[] Tables = { "counterparties", "stores", "units_of_measure", "retail_points", "employees", "supplies", "enters", "losses", "inventories", "supplier_returns", "retail_sales", "cash_shifts", "money_transactions", }; protected override void Up(MigrationBuilder b) { foreach (var t in Tables) { b.Sql($@"ALTER TABLE public.""{t}"" ADD COLUMN IF NOT EXISTS ""MoySkladExternalId"" text;"); b.Sql($@"CREATE INDEX IF NOT EXISTS ""IX_{t}_MoySkladExternalId"" ON public.""{t}"" (""OrganizationId"", ""MoySkladExternalId"");"); } } protected override void Down(MigrationBuilder b) { foreach (var t in Tables) { b.Sql($@"DROP INDEX IF EXISTS ""IX_{t}_MoySkladExternalId"";"); b.Sql($@"ALTER TABLE public.""{t}"" DROP COLUMN IF EXISTS ""MoySkladExternalId"";"); } } } }