<?php

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

return new class extends Migration
{
    public function up(): void
    {
        $sql = file_get_contents(base_path('database/schema/legacy/batch_01_foundation.sql'));

        if (! is_string($sql) || trim($sql) === '') {
            return;
        }

        $normalized = preg_replace('/^\s*--.*$/m', '', $sql) ?: $sql;

        $statements = array_filter(
            array_map('trim', preg_split('/;\s*\n/', $normalized) ?: []),
            static fn (string $statement): bool => $statement !== ''
        );

        foreach ($statements as $statement) {
            DB::unprepared($statement.';');
        }
    }

    public function down(): void
    {
        DB::statement('SET FOREIGN_KEY_CHECKS=0');
        Schema::dropIfExists('impresoras');
        Schema::dropIfExists('resoluciones_dian');
        Schema::dropIfExists('numeraciones_documentos');
        Schema::dropIfExists('unidades_medida');
        Schema::dropIfExists('monedas');
        Schema::dropIfExists('metodos_pago');
        Schema::dropIfExists('configuracion_empresa');
        Schema::dropIfExists('configuracion_global');
        Schema::dropIfExists('suscripciones');
        Schema::dropIfExists('planes');
        Schema::dropIfExists('usuario_empresa');
        Schema::dropIfExists('usuarios');
        Schema::dropIfExists('sucursales');
        Schema::dropIfExists('rol_permiso');
        Schema::dropIfExists('permisos');
        Schema::dropIfExists('roles');
        Schema::dropIfExists('empresas');
        Schema::dropIfExists('ciudades');
        Schema::dropIfExists('paises');
        DB::statement('SET FOREIGN_KEY_CHECKS=1');
    }
};
