<?php

namespace App\Http\Middleware;

use App\Services\Instalador\EstadoInstalacao;
use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

/**
 * Prepara o ambiente do instalador e o fecha quando já foi usado.
 *
 * Precisa rodar ANTES do StartSession: a sessão e o cache do sistema ficam em
 * banco, e durante a instalação o banco ainda não tem tabela nenhuma. Sem esta
 * troca para arquivo, a primeira tela do instalador morreria com erro de SQL.
 */
class PrepararInstalador
{
    public function handle(Request $request, Closure $next): Response
    {
        abort_if(EstadoInstalacao::concluida(), 404);

        config([
            'session.driver' => 'file',
            'cache.default' => 'file',
            'queue.default' => 'sync',
        ]);

        return $next($request);
    }
}
