29 lines
623 B
PHP
29 lines
623 B
PHP
|
|
<?php
|
||
|
|
|
||
|
|
declare(strict_types=1);
|
||
|
|
|
||
|
|
namespace App\Queries\Pages;
|
||
|
|
|
||
|
|
use App\Contracts\Query;
|
||
|
|
use App\Contracts\QueryInput;
|
||
|
|
use App\Dto\PageDto;
|
||
|
|
use App\Models\Page;
|
||
|
|
use Webmozart\Assert\Assert;
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @implements \App\Contracts\Query<\App\Queries\Pages\GetPageQueryInput, \App\Dto\PageDto>
|
||
|
|
*/
|
||
|
|
final readonly class GetPageQuery implements Query
|
||
|
|
{
|
||
|
|
public function __invoke(QueryInput $input): PageDto
|
||
|
|
{
|
||
|
|
Assert::isAOf($input, GetPageQueryInput::class);
|
||
|
|
|
||
|
|
$page = Page::query()
|
||
|
|
->where('slug', $input->name->value)
|
||
|
|
->firstOrFail();
|
||
|
|
|
||
|
|
return PageDto::fromModel($page);
|
||
|
|
}
|
||
|
|
}
|