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

#nullable disable

namespace foodmarket.Infrastructure.Persistence.Migrations
{
    /// <summary>Платформенные настройки (singleton). SMTP-креды для отправки
    /// писем (forgot-password, нотификации). Управляется SuperAdmin'ом через
    /// /super-admin/platform-settings. Видна только им.</summary>
    [DbContext(typeof(AppDbContext))]
    [Migration("20260506100000_Phase5b_PlatformSettings")]
    public partial class Phase5b_PlatformSettings : Migration
    {
        protected override void Up(MigrationBuilder b)
        {
            // Идемпотентно — миграция могла быть применена ранее SQL-ом, либо
            // соседняя миграция могла создать таблицу под тем же именем.
            b.Sql(@"
                CREATE TABLE IF NOT EXISTS public.platform_settings (
                    ""Id""                    uuid PRIMARY KEY,
                    ""SmtpHost""              varchar(200) NULL,
                    ""SmtpPort""              integer NULL,
                    ""SmtpUseSsl""            boolean NOT NULL DEFAULT false,
                    ""SmtpStartTls""          boolean NOT NULL DEFAULT true,
                    ""SmtpUsername""          varchar(200) NULL,
                    ""SmtpPasswordEncrypted"" text NULL,
                    ""FromEmail""             varchar(200) NULL,
                    ""FromName""              varchar(200) NULL,
                    ""CreatedAt""             timestamp with time zone NOT NULL,
                    ""UpdatedAt""             timestamp with time zone NULL
                );");
        }

        protected override void Down(MigrationBuilder b)
        {
            b.Sql(@"DROP TABLE IF EXISTS public.platform_settings;");
        }
    }
}
