using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using foodmarket.Infrastructure.Persistence;

#nullable disable

namespace foodmarket.Infrastructure.Persistence.Migrations
{
    /// <summary>Phase5d — выкидываем UnitOfMeasure.Description: для пяти
    /// канонических ОКЕИ-единиц («штука», «кг», ...) нечего описывать,
    /// поле никогда не заполнялось ни UI, ни импортом, ни сидером.
    /// Code остаётся (нужен для интеграций МойСклад/1С), но скрыт в UI
    /// от org Admin'а.</summary>
    [DbContext(typeof(AppDbContext))]
    [Migration("20260508100000_Phase5d_DropUnitOfMeasureDescription")]
    public partial class Phase5d_DropUnitOfMeasureDescription : Migration
    {
        protected override void Up(MigrationBuilder b)
        {
            // Идемпотентно: на старой стейдж-БД колонка Description была, на свежей
            // (после рефакторинга Phase1Catalog) её сразу нет — без IF EXISTS
            // миграция падает с 42703 «column Description does not exist».
            b.Sql(@"
                DO $$
                BEGIN
                    IF EXISTS (SELECT 1 FROM information_schema.columns
                               WHERE table_schema='public' AND table_name='units_of_measure'
                               AND column_name='Description') THEN
                        ALTER TABLE public.units_of_measure DROP COLUMN ""Description"";
                    END IF;
                END $$;");
        }

        protected override void Down(MigrationBuilder b)
        {
            b.Sql(@"
                DO $$
                BEGIN
                    IF NOT EXISTS (SELECT 1 FROM information_schema.columns
                                   WHERE table_schema='public' AND table_name='units_of_measure'
                                   AND column_name='Description') THEN
                        ALTER TABLE public.units_of_measure
                            ADD COLUMN ""Description"" varchar(500) NULL;
                    END IF;
                END $$;");
        }
    }
}
