<?php

namespace App\Modules\{{ module }}\Application\Index;

use App\Modules\{{ module }}\Application\{{ module }}Response;
use App\Modules\{{ module }}\Domain\{{ module }};
use App\Modules\{{ module }}\Domain\Id{{ module }};
use App\Modules\Shared\Domain\Bus\Query\QueryHandler;

final class Index{{ module }}QueryHandler implements QueryHandler
{
    public function __construct(private {{ module }}Indexer $indexer) {}

    public function __invoke(Index{{ module }}Query $query): {{ module }}Response
    {
        /** @var {{ module }} $model */
        $model = $this->indexer->__invoke(new Id{{ module }}($query->id));
        return $model->toDTO({{ module }}Response::class);
    }
}
