36 lines
1.0 KiB
PHP
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);
|
|
}
|
|
}
|