jikan-rest/app/Dto/AnimeSearchCommand.php
pushrbx 6eff2af172 various fixes and refactorings
- genre filtering
- added unapproved filtering
- fixed sfw filtering
- fixed kids filtering
- fixed deprecation warnings as of php 8.1
  - DateTime ctor can't take `null` anymore as first param
  - preg_replace doesn't accept `null` values as `$subject`
- fixed failed items indexer (the --failed option of indexers) -- it didn't load the correct file making it impossible to retry the indexing
- changed the document schema for search indexed anime/manga
  - added `approved` field to them
  - staging will require a reimport into TypeSense
- the central filtering system will now process `sfw` and `unapproved` filters, so they will be applied implicitly through the `filter` model scope method.
2023-05-21 11:18:35 +01:00

51 lines
1.6 KiB
PHP

<?php
namespace App\Dto;
use App\Contracts\DataRequest;
use App\Dto\Concerns\HasSfwParameter;
use App\Enums\AnimeOrderByEnum;
use App\Enums\AnimeRatingEnum;
use App\Enums\AnimeStatusEnum;
use App\Enums\AnimeTypeEnum;
use App\Http\Resources\V4\AnimeCollection;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\MapInputName;
use Spatie\LaravelData\Attributes\MapOutputName;
use Spatie\LaravelData\Attributes\Validation\IntegerType;
use Spatie\LaravelData\Attributes\Validation\Min;
use Spatie\LaravelData\Attributes\Validation\Prohibits;
use Spatie\LaravelData\Attributes\Validation\StringType;
use Spatie\LaravelData\Attributes\WithCast;
use App\Casts\EnumCast;
use Spatie\LaravelData\Optional;
/**
* @implements DataRequest<AnimeCollection>
*/
final class AnimeSearchCommand extends MediaSearchCommand implements DataRequest
{
#[WithCast(EnumCast::class, AnimeStatusEnum::class), EnumValidation(AnimeStatusEnum::class)]
public AnimeStatusEnum|Optional $status;
#[WithCast(EnumCast::class, AnimeTypeEnum::class), EnumValidation(AnimeTypeEnum::class)]
public AnimeTypeEnum|Optional $type;
#[WithCast(EnumCast::class, AnimeRatingEnum::class), EnumValidation(AnimeRatingEnum::class)]
public AnimeRatingEnum|Optional $rating;
#[IntegerType, Min(1)]
public int|Optional $producer;
#[Prohibits("producer"), StringType]
public string|Optional $producers;
#[
MapInputName("order_by"),
MapOutputName("order_by"),
WithCast(EnumCast::class, AnimeOrderByEnum::class),
EnumValidation(AnimeOrderByEnum::class)
]
public AnimeOrderByEnum|Optional $orderBy;
}