<?php

declare(strict_types=1);

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

/**
 * F-P1 (152-ФЗ ретеншен): частичный индекс по deals.deleted_at для дешёвой
 * выборки soft-deleted сделок командой pd:scrub-soft-deleted-deals.
 *
 * Партиционированная deals — индекс на parent распространяется на все партиции.
 * Частичный (WHERE deleted_at IS NOT NULL) — покрывает только удалённые строки
 * (малое подмножество), не раздувает индекс для живых сделок.
 */
return new class extends Migration
{
    public function up(): void
    {
        DB::statement(
            'CREATE INDEX IF NOT EXISTS deals_deleted_at_index '
            .'ON deals (deleted_at) WHERE deleted_at IS NOT NULL'
        );
    }

    public function down(): void
    {
        DB::statement('DROP INDEX IF EXISTS deals_deleted_at_index');
    }
};
