using Microsoft.EntityFrameworkCore.Migrations;

#nullable disable

namespace foodmarket.Infrastructure.Persistence.Migrations
{
    /// <summary>ProductGroup и UnitOfMeasure становятся двухуровневыми
    /// справочниками: системные эталонные (OrganizationId=NULL, управляются
    /// SuperAdmin'ом, видны всем tenant'ам как «Эталон») и tenant'овские.
    /// На уровне БД — DROP NOT NULL на колонке OrganizationId; существующие
    /// записи остаются tenant'овскими (OrganizationId сохраняется), миграция
    /// additive — никакие данные не теряются.</summary>
    public partial class Phase4d_OptionalTenantOnDirectories : Migration
    {
        protected override void Up(MigrationBuilder b)
        {
            b.AlterColumn<System.Guid>(
                name: "OrganizationId", schema: "public", table: "product_groups",
                type: "uuid", nullable: true,
                oldClrType: typeof(System.Guid), oldType: "uuid");
            b.AlterColumn<System.Guid>(
                name: "OrganizationId", schema: "public", table: "units_of_measure",
                type: "uuid", nullable: true,
                oldClrType: typeof(System.Guid), oldType: "uuid");
        }

        protected override void Down(MigrationBuilder b)
        {
            // Защита от потери данных при downgrade — если есть NULL'ы (системные
            // записи), нельзя вернуть NOT NULL без миграции данных. Оставляем
            // как есть; downgrade в проде делать через отдельный скрипт.
            b.Sql("/* No-op: оптимально не возвращать NOT NULL без data migration */");
        }
    }
}
