<?php

declare(strict_types=1);

namespace Modules\{{ module }}\Logic\Controllers;

use Illuminate\Http\JsonResponse;
use Modules\{{ module }}\Logic\Actions\{{ action }}Action;
use Modules\{{ module }}\Logic\Requests\{{ action }}Request;

/**
 * @intent Controller de borda para o recurso {{ action }}.
 *
 * @description Invocável e focado em delegar a lógica de negócio para a Action e converter o
 *              retorno em resposta HTTP. Erros de domínio sobem como
 *              \Core\Internal\Exceptions\ProblemDetailsException (RFC 7807).
 *              Sem Result<T> (ADR-001): a Action devolve valor concreto ou lança exceção.
 */
final class {{ class }}Controller
{
    public function __invoke({{ action }}Request $request, {{ action }}Action $action): JsonResponse
    {
        $recurso = $action->execute($request->toDto());

        return response()->json(['data' => $recurso], 201);
    }
}
