adds reviews dto

This commit is contained in:
Irfan 2023-07-09 21:22:50 +05:00
parent 466dcac516
commit c1fb9dec95
9 changed files with 75 additions and 14 deletions

View File

@ -4,6 +4,8 @@ namespace App\Dto;
use App\Casts\ContextualBooleanCast;
use App\Casts\EnumCast;
use App\Dto\Concerns\HasPreliminaryParameter;
use App\Dto\Concerns\HasSpoilersParameter;
use App\Dto\Concerns\PreparesData;
use App\Enums\MediaReviewsSortEnum;
use App\Rules\Attributes\EnumValidation;
@ -14,22 +16,17 @@ use Spatie\LaravelData\Attributes\Validation\Numeric;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Optional;
/**
* @extends LookupDataCommand<JsonResponse>
*/
final class AnimeReviewsLookupCommand extends LookupDataCommand
{
use PreparesData;
use PreparesData, HasPreliminaryParameter, HasSpoilersParameter;
#[Numeric, Min(1)]
public int|Optional $page = 1;
#[WithCast(EnumCast::class, MediaReviewsSortEnum::class), EnumValidation(MediaReviewsSortEnum::class)]
public MediaReviewsSortEnum|Optional $sort;
#[BooleanType, WithCast(ContextualBooleanCast::class)]
public bool|Optional $spoilers;
#[BooleanType, WithCast(ContextualBooleanCast::class)]
public bool|Optional $preliminary;
}

View File

@ -0,0 +1,26 @@
<?php
namespace App\Dto\Concerns;
use App\Casts\ContextualBooleanCast;
use OpenApi\Annotations as OA;
use Spatie\LaravelData\Attributes\Validation\BooleanType;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Optional;
/**
* @OA\Parameter(
* name="preliminary",
* in="query",
* required=false,
* description="Any reviews left during an ongoing anime/manga, those reviews are tagged as preliminary. Preliminary reviews are not returned by default. e.g usage: `?preliminary=true`",
* @OA\Schema(type="boolean")
* ),
*/
trait HasPreliminaryParameter
{
use PreparesData;
#[BooleanType, WithCast(ContextualBooleanCast::class)]
public bool|Optional $preliminary;
}

View File

@ -0,0 +1,26 @@
<?php
namespace App\Dto\Concerns;
use App\Casts\ContextualBooleanCast;
use OpenApi\Annotations as OA;
use Spatie\LaravelData\Attributes\Validation\BooleanType;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Optional;
/**
* @OA\Parameter(
* name="spoiler",
* in="query",
* required=false,
* description="Any reviews that are tagged as a spoiler. Spoiler reviews are not returned by default. e.g usage: `?spoiler=true`",
* @OA\Schema(type="boolean")
* ),
*/
trait HasSpoilersParameter
{
use PreparesData;
#[BooleanType, WithCast(ContextualBooleanCast::class)]
public bool|Optional $spoilers;
}

View File

@ -5,6 +5,8 @@ namespace App\Dto;
use App\Casts\ContextualBooleanCast;
use App\Casts\EnumCast;
use App\Dto\Concerns\HasPreliminaryParameter;
use App\Dto\Concerns\HasSpoilersParameter;
use App\Dto\Concerns\PreparesData;
use App\Enums\MediaReviewsSortEnum;
use App\Rules\Attributes\EnumValidation;
@ -20,17 +22,11 @@ use Spatie\LaravelData\Optional;
*/
final class MangaReviewsLookupCommand extends LookupDataCommand
{
use PreparesData;
use PreparesData, HasPreliminaryParameter, HasSpoilersParameter;
#[Numeric, Min(1)]
public int|Optional $page = 1;
#[WithCast(EnumCast::class, MediaReviewsSortEnum::class), EnumValidation(MediaReviewsSortEnum::class)]
public MediaReviewsSortEnum|Optional $sort;
#[BooleanType, WithCast(ContextualBooleanCast::class)]
public bool|Optional $spoilers;
#[BooleanType, WithCast(ContextualBooleanCast::class)]
public bool|Optional $preliminary;
}

View File

@ -2,6 +2,10 @@
namespace App\Dto;
use App\Dto\Concerns\HasPreliminaryParameter;
use App\Dto\Concerns\HasSpoilersParameter;
final class QueryAnimeReviewsCommand extends QueryReviewsCommand
{
use HasPreliminaryParameter, HasSpoilersParameter;
}

View File

@ -2,6 +2,10 @@
namespace App\Dto;
use App\Dto\Concerns\HasPreliminaryParameter;
use App\Dto\Concerns\HasSpoilersParameter;
final class QueryMangaReviewsCommand extends QueryReviewsCommand
{
use HasPreliminaryParameter, HasSpoilersParameter;
}

View File

@ -668,6 +668,8 @@ class AnimeController extends Controller
* ),
*
* @OA\Parameter(ref="#/components/parameters/page"),
* @OA\Parameter(ref="#/components/parameters/preliminary"),
* @OA\Parameter(ref="#/components/parameters/spoiler"),
*
* @OA\Response(
* response="200",

View File

@ -386,6 +386,8 @@ class MangaController extends Controller
* ),
*
* @OA\Parameter(ref="#/components/parameters/page"),
* @OA\Parameter(ref="#/components/parameters/preliminary"),
* @OA\Parameter(ref="#/components/parameters/spoiler"),
*
* @OA\Response(
* response="200",

View File

@ -14,6 +14,8 @@ class ReviewsController extends Controller
* tags={"reviews"},
*
* @OA\Parameter(ref="#/components/parameters/page"),
* @OA\Parameter(ref="#/components/parameters/preliminary"),
* @OA\Parameter(ref="#/components/parameters/spoiler"),
*
*
* @OA\Response(
@ -67,6 +69,8 @@ class ReviewsController extends Controller
* tags={"reviews"},
*
* @OA\Parameter(ref="#/components/parameters/page"),
* @OA\Parameter(ref="#/components/parameters/preliminary"),
* @OA\Parameter(ref="#/components/parameters/spoiler"),
*
* @OA\Response(
* response="200",