using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace foodmarket.Infrastructure.Persistence.Migrations
{
    /// <summary>Переводит products.Vat в numeric(5,2) — чтобы ставки могли быть
    /// нецелыми (например 16.00, 10.50). Семантика галки VatEnabled остаётся
    /// прежней: управляет видимостью поля Vat в UI карточки товара.</summary>
    public partial class Phase5d_ProductVatDecimal : Migration
    {
        protected override void Up(MigrationBuilder b)
        {
            // Идемпотентно: на стейдже Phase1Catalog создавал products.Vat integer,
            // а на свежей БД отрефакторённый Phase1Catalog уже создаёт products.VatRateId
            // (FK на vat_rates) и колонки Vat нет. Без NOT EXISTS-гарда миграция падает
            // с "column Vat does not exist" при первом dotnet ef database update.
            b.Sql("""
                DO $$
                BEGIN
                    IF EXISTS (SELECT 1 FROM information_schema.columns
                               WHERE table_schema='public' AND table_name='products'
                               AND column_name='Vat') THEN
                        ALTER TABLE public.products
                            ALTER COLUMN "Vat" TYPE numeric(5,2) USING "Vat"::numeric(5,2);
                    END IF;
                END $$;
            """);
        }

        protected override void Down(MigrationBuilder b)
        {
            b.Sql("""
                DO $$
                BEGIN
                    IF EXISTS (SELECT 1 FROM information_schema.columns
                               WHERE table_schema='public' AND table_name='products'
                               AND column_name='Vat') THEN
                        ALTER TABLE public.products
                            ALTER COLUMN "Vat" TYPE integer USING ROUND("Vat")::integer;
                    END IF;
                END $$;
            """);
        }
    }
}
