<?php

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

return new class extends Migration
{
    /**
     * Run the migrations.
     */
    public function up(): void
    {
        Schema::table('amministratori', function (Blueprint $table) {
            // Aggiunge campi per distribuzione multi-server
            if (!Schema::hasColumn('amministratori', 'server_database')) {
                $table->string('server_database')->nullable()->after('database_attivo')->comment('IP/hostname del server che ospita il database');
            }
            if (!Schema::hasColumn('amministratori', 'server_port')) {
                $table->integer('server_port')->nullable()->default(3306)->after('server_database')->comment('Porta del server database');
            }
            if (!Schema::hasColumn('amministratori', 'server_username')) {
                $table->string('server_username')->nullable()->after('server_port')->comment('Username database (se diverso dal default)');
            }
            if (!Schema::hasColumn('amministratori', 'server_password_encrypted')) {
                $table->text('server_password_encrypted')->nullable()->after('server_username')->comment('Password database criptata');
            }
            if (!Schema::hasColumn('amministratori', 'stato_sincronizzazione')) {
                $table->enum('stato_sincronizzazione', ['attivo', 'manutenzione', 'errore', 'migrazione'])->default('attivo')->after('server_password_encrypted')->comment('Stato sincronizzazione database');
            }
            if (!Schema::hasColumn('amministratori', 'ultimo_backup')) {
                $table->timestamp('ultimo_backup')->nullable()->after('stato_sincronizzazione')->comment('Data ultimo backup automatico');
            }
            if (!Schema::hasColumn('amministratori', 'dimensione_archivio')) {
                $table->bigInteger('dimensione_archivio')->nullable()->after('ultimo_backup')->comment('Dimensione archivio in bytes');
            }
            if (!Schema::hasColumn('amministratori', 'url_accesso')) {
                $table->string('url_accesso')->nullable()->after('dimensione_archivio')->comment('URL specifico per accesso diretto (multi-server)');
            }
            if (!Schema::hasColumn('amministratori', 'dns_principale')) {
                $table->boolean('dns_principale')->default(false)->after('url_accesso')->comment('Se true, questo server gestisce il DNS routing');
            }
            if (!Schema::hasColumn('amministratori', 'priorita_server')) {
                $table->tinyInteger('priorita_server')->default(1)->after('dns_principale')->comment('Priorità server (1=principale, 2=backup, etc.)');
            }
        });
    }

    /**
     * Reverse the migrations.
     */
    public function down(): void
    {
        Schema::table('amministratori', function (Blueprint $table) {
            $table->dropColumn([
                'server_database', 'server_port', 'server_username', 'server_password_encrypted',
                'stato_sincronizzazione', 'ultimo_backup', 'dimensione_archivio', 
                'url_accesso', 'dns_principale', 'priorita_server'
            ]);
        });
    }
};
