<?php

use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

/**
 * cPanel migration polish — Phase 2.
 *
 * Eklenenler:
 *  - last_completed_step: failed olduktan sonra retry'da nereden devam edileceği.
 *    Restore step'leri sırayla 'extract','parse','account','home','databases',
 *    'dns','mail','ssl','cron','limits','done'.
 *  - preflight_passed: false ise execute butonu blocked (UI'da uyarı).
 *  - preflight_data: blocker'lar (engelleyici sorunlar) + uyarılar (devam edilebilir).
 *  - remote_source: SSH ile uzak cPanel'den çekilen pkgacct için. JSON:
 *      {host, port, username, ssh_key_id, password_set, pkgacct_path}
 */
return new class extends Migration
{
    public function up(): void
    {
        Schema::table('migration_jobs', function (Blueprint $table) {
            $table->string('last_completed_step', 32)
                ->nullable()
                ->after('current_step')
                ->comment('Retry için son tamamlanan step adı');

            $table->boolean('preflight_passed')
                ->default(false)
                ->after('last_completed_step');

            $table->json('preflight_data')
                ->nullable()
                ->after('preflight_passed')
                ->comment('{blockers: [...], warnings: [...], checked_at}');

            $table->json('remote_source')
                ->nullable()
                ->after('preflight_data')
                ->comment('Uzak cPanel sunucudan pull edildiyse SSH bilgisi (password yok, key_id ref)');
        });
    }

    public function down(): void
    {
        Schema::table('migration_jobs', function (Blueprint $table) {
            $table->dropColumn(['last_completed_step', 'preflight_passed', 'preflight_data', 'remote_source']);
        });
    }
};
