<?php

declare(strict_types=1);

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

/**
 * Hole #6: таблица пульса планировщика.
 *
 * SaaS-level, без RLS. Одна строка на cron-задачу (PK = command_name).
 * Обновляется SchedulerHeartbeatTracker при каждом запуске задачи.
 */
return new class extends Migration
{
    public function up(): void
    {
        DB::unprepared(<<<'SQL'
            CREATE TABLE IF NOT EXISTS scheduler_heartbeats (
                command_name            VARCHAR(200) NOT NULL PRIMARY KEY,
                last_run_at             TIMESTAMPTZ,
                last_success_at         TIMESTAMPTZ,
                last_error              TEXT,
                runtime_ms              INT,
                consecutive_failures    INT NOT NULL DEFAULT 0,
                created_at              TIMESTAMPTZ DEFAULT NOW(),
                updated_at              TIMESTAMPTZ DEFAULT NOW()
            );

            COMMENT ON TABLE scheduler_heartbeats IS
                'Пульс планировщика: одна строка на cron-задачу, обновляется при каждом запуске. '
                'SaaS-level, без RLS. Используется SchedulerCheckHeartbeats для детекции '
                'пропавших или постоянно падающих задач (hole #6).';
        SQL);
    }

    public function down(): void
    {
        DB::unprepared('DROP TABLE IF EXISTS scheduler_heartbeats;');
    }
};
