fix(migrations): catch-up Phase3b_AddShowDescriptionOnProduct

Колонку organizations.ShowDescriptionOnProduct логически вводила миграция
Phase3b_DropProductShelfLifeDays, но я дописал её туда задним числом
после того как миграция уже применилась на стенде. EF проверяет только
__EFMigrationsHistory.MigrationId, не содержимое — поэтому колонка
не создалась, а после деплоя API падал в DevDataSeeder с
«column o.ShowDescriptionOnProduct does not exist».

Правильное лекарство — отдельная догоняющая миграция с idempotent
ALTER TABLE … ADD COLUMN IF NOT EXISTS. На стенде колонка уже добавлена
вручную и запись в истории миграций есть; пайплайн пройдёт мимо неё.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
nns 2026-04-26 01:10:36 +05:00
parent 2321010608
commit 72e602f4ca
2 changed files with 1923 additions and 0 deletions

View file

@ -0,0 +1,26 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace foodmarket.Infrastructure.Persistence.Migrations
{
/// <summary>organizations.ShowDescriptionOnProduct (default false) — догоняющая
/// миграция. Колонку логически вводила Phase3b_DropProductShelfLifeDays, но
/// она была дописана туда задним числом уже после применения миграции на
/// стенде, поэтому на части баз колонки нет. Добавляем идемпотентно.</summary>
public partial class Phase3b_AddShowDescriptionOnProduct : Migration
{
protected override void Up(MigrationBuilder b)
{
b.Sql(@"
ALTER TABLE public.organizations
ADD COLUMN IF NOT EXISTS ""ShowDescriptionOnProduct"" boolean NOT NULL DEFAULT false;
");
}
protected override void Down(MigrationBuilder b)
{
b.Sql(@"ALTER TABLE public.organizations DROP COLUMN IF EXISTS ""ShowDescriptionOnProduct"";");
}
}
}