<?php

declare(strict_types=1);

use Illuminate\Database\Migrations\Migration;
use Illuminate\Support\Facades\DB;

/**
 * FN-2 (приёмка 22.06.2026): миграция 2026_06_19_130000_drop_reminders_table дропнула
 * таблицу reminders, но ЗАБЫЛА убрать мёртвый ключ "reminder" из DEFAULT колонки
 * users.notification_preferences. schema.sql v8.45 уже отражает чистый дефолт, а сам
 * DB-дефолт на проде/дев всё ещё содержал "reminder" (расхождение канон ↔ БД).
 * Здесь — только SET DEFAULT (без reminder), под канон schema.sql §users.
 * Метаданные-only, без переписывания таблицы. Существующих строк не трогает.
 */
return new class extends Migration
{
    public function up(): void
    {
        DB::statement(<<<'SQL'
        ALTER TABLE users ALTER COLUMN notification_preferences SET DEFAULT '{
          "new_lead":         {"inapp": true,  "push": true,  "email": true},
          "low_balance":      {"email": true},
          "zero_balance":     {"email": true},
          "topup_success":    {"email": true},
          "invoice_paid":     {"email": true},
          "new_device_login": {"email": true},
          "marketing":        {"email": false}
        }'::jsonb
        SQL);
    }

    public function down(): void
    {
        // Восстановление прежнего (с мёртвым "reminder") дефолта.
        DB::statement(<<<'SQL'
        ALTER TABLE users ALTER COLUMN notification_preferences SET DEFAULT '{
          "new_lead":         {"inapp": true, "push": true, "email": true},
          "reminder":         {"inapp": true, "push": true, "email": true},
          "low_balance":      {"email": true},
          "zero_balance":     {"email": true},
          "topup_success":    {"email": true},
          "invoice_paid":     {"email": true},
          "new_device_login": {"email": true},
          "marketing":        {"email": false}
        }'::jsonb
        SQL);
    }
};
