Updated ProductPolicy and RecipePolicy to accept ProductDto in addition to Product. This change enhances the flexibility of the policies by allowing DTOs to be used for authorization checks. refactor(provider): simplify service provider bindings Refactored AppServiceProvider to simplify the binding of ProductDirectory and RecipeDirectory. Removed unnecessary dependencies and improved clarity. feat(route): update route bindings for front-end Changed route bindings for products and recipes to use frontProduct and frontRecipe. This improves clarity and consistency in route handling. fix(breadcrumbs): update breadcrumb checks for DTOs Updated breadcrumb generation to check for ProductDto and RecipeDto instead of their model counterparts. This ensures breadcrumbs function correctly with the new DTO structure. refactor(types): remove FilePath type and update schemas Removed the FilePath type definition and updated related schemas to use string directly. This simplifies type handling for file paths. style(entities): standardize naming conventions Updated naming conventions in Product and Recipe entities to use snake_case for consistency across the codebase. feat(frontend): update product and recipe pages for new DTO structure Modified front-end components to accommodate changes in the product and recipe data structures, ensuring compatibility with the new DTOs.
43 lines
1.1 KiB
PHP
43 lines
1.1 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
namespace App\Cqs\Queries\Recipes;
|
|
|
|
use App\Contracts\Directories\RecipeDirectory;
|
|
use App\Contracts\Query;
|
|
use App\Contracts\QueryInput;
|
|
use App\Dto\RecipeDto;
|
|
use App\Lib\PublicS3Disk;
|
|
use Domain\Models\Entities\Recipe as DomainRecipe;
|
|
use Webmozart\Assert\Assert;
|
|
|
|
/**
|
|
* @implements \App\Contracts\Query<\App\Cqs\Queries\Recipes\GetRelatedRecipesQueryInput, array<\App\Dto\RecipeDto>>
|
|
*/
|
|
final readonly class GetRelatedRecipesQuery implements Query
|
|
{
|
|
public function __construct(
|
|
private RecipeDirectory $recipeDirectory,
|
|
private PublicS3Disk $publicS3Disk,
|
|
) {
|
|
}
|
|
|
|
/**
|
|
* @return array<RecipeDto>
|
|
*/
|
|
public function __invoke(QueryInput $input): array
|
|
{
|
|
Assert::isAOf($input, GetRelatedRecipesQueryInput::class);
|
|
|
|
$recipes = $this->recipeDirectory->getRelatedRecipes($input->productId, $input->limit);
|
|
|
|
return array_map(
|
|
fn (DomainRecipe $recipe): RecipeDto => RecipeDto::fromEntity(
|
|
$recipe,
|
|
$this->publicS3Disk
|
|
),
|
|
$recipes
|
|
);
|
|
}
|
|
}
|