Files
Mangarr/src/Domain/Shared/Application/QueryHandler/GetJobByIdHandler.php
ext.jeremy.guillot@maxicoffee.domains 19395b4869 feat: activity page
2026-03-11 20:54:55 +01:00

36 lines
1.0 KiB
PHP

<?php
declare(strict_types=1);
namespace App\Domain\Shared\Application\QueryHandler;
use App\Domain\Shared\Application\Query\GetJobById;
use App\Domain\Shared\Application\Response\JobResponse;
use App\Domain\Shared\Domain\Contract\QueryHandlerInterface;
use App\Domain\Shared\Domain\Contract\QueryInterface;
use App\Domain\Shared\Domain\Contract\ResponseInterface;
use App\Domain\Shared\Domain\Contract\JobRepositoryInterface;
readonly class GetJobByIdHandler implements QueryHandlerInterface
{
public function __construct(
private JobRepositoryInterface $jobRepository
) {
}
public function handle(QueryInterface $query): ResponseInterface
{
if (!$query instanceof GetJobById) {
throw new \InvalidArgumentException(sprintf(
'Query must be instance of %s, %s given',
GetJobById::class,
get_class($query)
));
}
$job = $this->jobRepository->get($query->id);
return JobResponse::fromJob($job);
}
}