fixed more problems

This commit is contained in:
pushrbx 2023-01-27 22:19:31 +00:00
parent 5e922f7cd9
commit 9b5b5aad1e
21 changed files with 59 additions and 173 deletions

View File

@ -4,8 +4,8 @@ namespace App\Dto;
use App\Casts\EnumCast;
use App\Enums\AnimeForumFilterEnum;
use App\Rules\Attributes\EnumValidation;
use Illuminate\Http\JsonResponse;
use Spatie\Enum\Laravel\Rules\EnumRule;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Optional;
@ -14,13 +14,6 @@ use Spatie\LaravelData\Optional;
*/
final class AnimeForumLookupCommand extends LookupDataCommand
{
#[WithCast(EnumCast::class, AnimeForumFilterEnum::class)]
#[WithCast(EnumCast::class, AnimeForumFilterEnum::class), EnumValidation(AnimeForumFilterEnum::class)]
public AnimeForumFilterEnum|Optional $filter;
public static function rules(): array
{
return [
"filter" => [new EnumRule(AnimeForumFilterEnum::class)]
];
}
}

View File

@ -4,8 +4,8 @@ namespace App\Dto;
use App\Casts\EnumCast;
use App\Enums\MediaReviewsSortEnum;
use App\Rules\Attributes\EnumValidation;
use Illuminate\Http\JsonResponse;
use Spatie\Enum\Laravel\Rules\EnumRule;
use Spatie\LaravelData\Attributes\Validation\BooleanType;
use Spatie\LaravelData\Attributes\Validation\Min;
use Spatie\LaravelData\Attributes\Validation\Numeric;
@ -20,7 +20,7 @@ final class AnimeReviewsLookupCommand extends LookupDataCommand
#[Numeric, Min(1)]
public int|Optional $page = 1;
#[WithCast(EnumCast::class, MediaReviewsSortEnum::class)]
#[WithCast(EnumCast::class, MediaReviewsSortEnum::class), EnumValidation(MediaReviewsSortEnum::class)]
public MediaReviewsSortEnum|Optional $sort;
#[BooleanType]
@ -28,11 +28,4 @@ final class AnimeReviewsLookupCommand extends LookupDataCommand
#[BooleanType]
public bool|Optional $preliminary;
public static function rules(): array
{
return [
"sort" => [new EnumRule(MediaReviewsSortEnum::class)]
];
}
}

View File

@ -6,7 +6,7 @@ use App\Casts\EnumCast;
use App\Contracts\DataRequest;
use App\Enums\CharacterOrderByEnum;
use App\Http\Resources\V4\CharacterCollection;
use Spatie\Enum\Laravel\Rules\EnumRule;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\MapInputName;
use Spatie\LaravelData\Attributes\MapOutputName;
use Spatie\LaravelData\Attributes\WithCast;
@ -17,13 +17,7 @@ use Spatie\LaravelData\Optional;
*/
final class CharactersSearchCommand extends SearchCommand implements DataRequest
{
#[MapInputName("order_by"), MapOutputName("order_by"), WithCast(EnumCast::class, CharacterOrderByEnum::class)]
#[MapInputName("order_by"), MapOutputName("order_by"),
WithCast(EnumCast::class, CharacterOrderByEnum::class), EnumValidation(CharacterOrderByEnum::class)]
public CharacterOrderByEnum|Optional $orderBy;
public static function rules(): array
{
return [
"order_by" => [new EnumRule(CharacterOrderByEnum::class)]
];
}
}

View File

@ -8,7 +8,7 @@ use App\Enums\ClubCategoryEnum;
use App\Enums\ClubOrderByEnum;
use App\Enums\ClubTypeEnum;
use App\Http\Resources\V4\ClubCollection;
use Spatie\Enum\Laravel\Rules\EnumRule;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\MapInputName;
use Spatie\LaravelData\Attributes\MapOutputName;
use Spatie\LaravelData\Attributes\WithCast;
@ -19,22 +19,13 @@ use Spatie\LaravelData\Optional;
*/
final class ClubSearchCommand extends SearchCommand implements DataRequest
{
#[WithCast(EnumCast::class, ClubCategoryEnum::class)]
#[WithCast(EnumCast::class, ClubCategoryEnum::class), EnumValidation(ClubCategoryEnum::class)]
public ClubCategoryEnum|Optional $category;
#[WithCast(EnumCast::class, ClubTypeEnum::class)]
#[WithCast(EnumCast::class, ClubTypeEnum::class), EnumValidation(ClubTypeEnum::class)]
public ClubTypeEnum|Optional $type;
#[MapInputName("order_by"), MapOutputName("order_by"), WithCast(EnumCast::class, ClubOrderByEnum::class)]
#[MapInputName("order_by"), MapOutputName("order_by"),
WithCast(EnumCast::class, ClubOrderByEnum::class), EnumValidation(ClubOrderByEnum::class)]
public ClubOrderByEnum|Optional $orderBy;
public static function rules(): array
{
return [
...parent::rules(),
"category" => [new EnumRule(ClubCategoryEnum::class)],
"type" => [new EnumRule(ClubTypeEnum::class)],
"order_by" => [new EnumRule(ClubOrderByEnum::class)]
];
}
}

View File

@ -3,7 +3,7 @@
namespace App\Dto;
use App\Enums\GenreFilterEnum;
use Spatie\Enum\Laravel\Rules\EnumRule;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\WithCast;
use App\Casts\EnumCast;
use Spatie\LaravelData\Data;
@ -11,13 +11,6 @@ use Spatie\LaravelData\Optional;
abstract class GenreListCommand extends Data
{
#[WithCast(EnumCast::class, GenreFilterEnum::class)]
#[WithCast(EnumCast::class, GenreFilterEnum::class), EnumValidation(GenreFilterEnum::class)]
public GenreFilterEnum|Optional $filter;
public static function rules(): array
{
return [
"filter" => [new EnumRule(GenreFilterEnum::class)]
];
}
}

View File

@ -6,7 +6,7 @@ use App\Casts\EnumCast;
use App\Contracts\DataRequest;
use App\Enums\MagazineOrderByEnum;
use App\Http\Resources\V4\MagazineCollection;
use Spatie\Enum\Laravel\Rules\EnumRule;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\MapInputName;
use Spatie\LaravelData\Attributes\MapOutputName;
use Spatie\LaravelData\Attributes\WithCast;
@ -17,13 +17,7 @@ use Spatie\LaravelData\Optional;
*/
final class MagazineSearchCommand extends SearchCommand implements DataRequest
{
#[MapInputName("order_by"), MapOutputName("order_by"), WithCast(EnumCast::class, MagazineOrderByEnum::class)]
#[MapInputName("order_by"), MapOutputName("order_by"),
WithCast(EnumCast::class, MagazineOrderByEnum::class), EnumValidation(MagazineOrderByEnum::class)]
public MagazineOrderByEnum|Optional $orderBy;
public static function rules(): array
{
return [
"order_by" => [new EnumRule(MagazineOrderByEnum::class)]
];
}
}

View File

@ -5,8 +5,8 @@ namespace App\Dto;
use App\Casts\EnumCast;
use App\Enums\MangaForumFilterEnum;
use App\Rules\Attributes\EnumValidation;
use Illuminate\Http\JsonResponse;
use Spatie\Enum\Laravel\Rules\EnumRule;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Optional;
@ -15,13 +15,6 @@ use Spatie\LaravelData\Optional;
*/
final class MangaForumLookupCommand extends LookupDataCommand
{
#[WithCast(EnumCast::class, MangaForumFilterEnum::class)]
#[WithCast(EnumCast::class, MangaForumFilterEnum::class), EnumValidation(MangaForumFilterEnum::class)]
public MangaForumFilterEnum|Optional $filter;
public static function rules(): array
{
return [
"filter" => [new EnumRule(MangaForumFilterEnum::class)]
];
}
}

View File

@ -5,8 +5,8 @@ namespace App\Dto;
use App\Casts\EnumCast;
use App\Enums\MediaReviewsSortEnum;
use App\Rules\Attributes\EnumValidation;
use Illuminate\Http\JsonResponse;
use Spatie\Enum\Laravel\Rules\EnumRule;
use Spatie\LaravelData\Attributes\Validation\BooleanType;
use Spatie\LaravelData\Attributes\Validation\Min;
use Spatie\LaravelData\Attributes\Validation\Numeric;
@ -21,7 +21,7 @@ final class MangaReviewsLookupCommand extends LookupDataCommand
#[Numeric, Min(1)]
public int|Optional $page = 1;
#[WithCast(EnumCast::class, MediaReviewsSortEnum::class)]
#[WithCast(EnumCast::class, MediaReviewsSortEnum::class), EnumValidation(MediaReviewsSortEnum::class)]
public MediaReviewsSortEnum|Optional $sort;
#[BooleanType]
@ -29,11 +29,4 @@ final class MangaReviewsLookupCommand extends LookupDataCommand
#[BooleanType]
public bool|Optional $preliminary;
public static function rules(): array
{
return [
"sort" => [new EnumRule(MediaReviewsSortEnum::class)]
];
}
}

View File

@ -6,7 +6,7 @@ use App\Casts\EnumCast;
use App\Contracts\DataRequest;
use App\Enums\PeopleOrderByEnum;
use App\Http\Resources\V4\PersonCollection;
use Spatie\Enum\Laravel\Rules\EnumRule;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\MapInputName;
use Spatie\LaravelData\Attributes\MapOutputName;
use Spatie\LaravelData\Attributes\WithCast;
@ -17,13 +17,7 @@ use Spatie\LaravelData\Optional;
*/
final class PeopleSearchCommand extends SearchCommand implements DataRequest
{
#[MapInputName("order_by"), MapOutputName("order_by"), WithCast(EnumCast::class, PeopleOrderByEnum::class)]
#[MapInputName("order_by"), MapOutputName("order_by"),
WithCast(EnumCast::class, PeopleOrderByEnum::class), EnumValidation(PeopleOrderByEnum::class)]
public PeopleOrderByEnum|Optional $orderBy;
public static function rules(): array
{
return [
"order_by" => [new EnumRule(PeopleOrderByEnum::class)]
];
}
}

View File

@ -6,7 +6,7 @@ use App\Casts\EnumCast;
use App\Contracts\DataRequest;
use App\Enums\ProducerOrderByEnum;
use App\Http\Resources\V4\ProducerCollection;
use Spatie\Enum\Laravel\Rules\EnumRule;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\MapInputName;
use Spatie\LaravelData\Attributes\MapOutputName;
use Spatie\LaravelData\Attributes\WithCast;
@ -17,13 +17,7 @@ use Spatie\LaravelData\Optional;
*/
final class ProducersSearchCommand extends SearchCommand implements DataRequest
{
#[MapInputName("order_by"), MapOutputName("order_by"), WithCast(EnumCast::class, ProducerOrderByEnum::class)]
#[MapInputName("order_by"), MapOutputName("order_by"),
WithCast(EnumCast::class, ProducerOrderByEnum::class), EnumValidation(ProducerOrderByEnum::class)]
public ProducerOrderByEnum|Optional $orderBy;
public static function rules(): array
{
return [
"order_by" => [new EnumRule(ProducerOrderByEnum::class)]
];
}
}

View File

@ -9,11 +9,10 @@ use App\Contracts\DataRequest;
use App\Dto\Concerns\HasLimitParameter;
use App\Dto\Concerns\HasPageParameter;
use App\Enums\AnimeScheduleFilterEnum;
use App\Rules\Attributes\EnumValidation;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Spatie\Enum\Laravel\Rules\EnumRule;
use Spatie\LaravelData\Attributes\Validation\BooleanType;
use Spatie\LaravelData\Attributes\Validation\Nullable;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Optional;
@ -31,16 +30,9 @@ final class QueryAnimeSchedulesCommand extends Data implements DataRequest
#[BooleanType]
public bool|Optional $sfw = false;
#[WithCast(EnumCast::class, AnimeScheduleFilterEnum::class)]
#[WithCast(EnumCast::class, AnimeScheduleFilterEnum::class), EnumValidation(AnimeScheduleFilterEnum::class)]
public ?AnimeScheduleFilterEnum $filter;
public static function rules(...$args): array
{
return [
"filter" => [new EnumRule(AnimeScheduleFilterEnum::class), new Nullable()]
];
}
/** @noinspection PhpUnused */
public static function fromRequestAndDay(Request $request, ?string $day): self
{

View File

@ -9,7 +9,7 @@ use App\Contracts\DataRequest;
use App\Dto\Concerns\HasLimitParameter;
use App\Dto\Concerns\HasPageParameter;
use App\Enums\AnimeTypeEnum;
use Spatie\Enum\Laravel\Rules\EnumRule;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Optional;
@ -19,13 +19,6 @@ abstract class QueryAnimeSeasonCommand extends Data implements DataRequest
{
use HasLimitParameter, HasRequestFingerprint, HasPageParameter;
#[WithCast(EnumCast::class, AnimeTypeEnum::class)]
#[WithCast(EnumCast::class, AnimeTypeEnum::class), EnumValidation(AnimeTypeEnum::class)]
public AnimeTypeEnum|Optional $filter;
public static function rules(...$args): array
{
return [
"filter" => [new EnumRule(AnimeTypeEnum::class)]
];
}
}

View File

@ -9,10 +9,8 @@ use App\Contracts\DataRequest;
use App\Dto\Concerns\HasPageParameter;
use App\Enums\MediaReviewsSortEnum;
use App\Http\Resources\V4\ResultsResource;
use Spatie\Enum\Laravel\Rules\EnumRule;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\Validation\BooleanType;
use Spatie\LaravelData\Attributes\Validation\Min;
use Spatie\LaravelData\Attributes\Validation\Numeric;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Data;
use Spatie\LaravelData\Optional;
@ -24,7 +22,7 @@ abstract class QueryReviewsCommand extends Data implements DataRequest
{
use HasRequestFingerprint, HasPageParameter;
#[WithCast(EnumCast::class, MediaReviewsSortEnum::class)]
#[WithCast(EnumCast::class, MediaReviewsSortEnum::class), EnumValidation(MediaReviewsSortEnum::class)]
public MediaReviewsSortEnum|Optional $sort;
#[BooleanType]
@ -32,11 +30,4 @@ abstract class QueryReviewsCommand extends Data implements DataRequest
#[BooleanType]
public bool|Optional $preliminary;
public static function rules(): array
{
return [
"sort" => [new EnumRule(MediaReviewsSortEnum::class)]
];
}
}

View File

@ -5,7 +5,7 @@ namespace App\Dto;
use App\Casts\EnumCast;
use App\Dto\Concerns\MapsRouteParameters;
use App\Enums\AnimeSeasonEnum;
use Spatie\Enum\Laravel\Rules\EnumRule;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\Validation\Between;
use Spatie\LaravelData\Attributes\Validation\Required;
use Spatie\LaravelData\Attributes\WithCast;
@ -18,18 +18,10 @@ final class QuerySpecificAnimeSeasonCommand extends QueryAnimeSeasonCommand
#[Required, Between(1000, 2999)]
public int $year;
#[WithCast(EnumCast::class, AnimeSeasonEnum::class)]
#[WithCast(EnumCast::class, AnimeSeasonEnum::class), EnumValidation(AnimeSeasonEnum::class)]
public AnimeSeasonEnum $season;
private static int $defaultLimit = 30;
public static function rules(...$args): array
{
return [
...parent::rules(...$args),
"season" => [new EnumRule(AnimeSeasonEnum::class), new Required()]
];
}
protected static int $defaultLimit = 30;
public static function messages(...$args): array
{

View File

@ -7,6 +7,7 @@ use App\Contracts\DataRequest;
use App\Enums\AnimeTypeEnum;
use App\Enums\TopAnimeFilterEnum;
use App\Http\Resources\V4\AnimeCollection;
use App\Rules\Attributes\EnumValidation;
use Spatie\Enum\Laravel\Rules\EnumRule;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Optional;
@ -16,17 +17,9 @@ use Spatie\LaravelData\Optional;
*/
final class QueryTopAnimeItemsCommand extends QueryTopItemsCommand implements DataRequest
{
#[WithCast(EnumCast::class, AnimeTypeEnum::class)]
#[WithCast(EnumCast::class, AnimeTypeEnum::class), EnumValidation(AnimeTypeEnum::class)]
public AnimeTypeEnum|Optional $type;
#[WithCast(EnumCast::class, TopAnimeFilterEnum::class)]
#[WithCast(EnumCast::class, TopAnimeFilterEnum::class), EnumValidation(TopAnimeFilterEnum::class)]
public TopAnimeFilterEnum|Optional $filter;
public static function rules(): array
{
return [
"type" => [new EnumRule(AnimeTypeEnum::class)],
"filter" => [new EnumRule(TopAnimeFilterEnum::class)]
];
}
}

View File

@ -7,6 +7,7 @@ use App\Contracts\DataRequest;
use App\Enums\MangaTypeEnum;
use App\Enums\TopMangaFilterEnum;
use App\Http\Resources\V4\MangaCollection;
use App\Rules\Attributes\EnumValidation;
use Spatie\Enum\Laravel\Rules\EnumRule;
use Spatie\LaravelData\Attributes\WithCast;
use Spatie\LaravelData\Optional;
@ -16,17 +17,9 @@ use Spatie\LaravelData\Optional;
*/
final class QueryTopMangaItemsCommand extends QueryTopItemsCommand implements DataRequest
{
#[WithCast(EnumCast::class, MangaTypeEnum::class)]
#[WithCast(EnumCast::class, MangaTypeEnum::class), EnumValidation(MangaTypeEnum::class)]
public MangaTypeEnum|Optional $type;
#[WithCast(EnumCast::class, TopMangaFilterEnum::class)]
#[WithCast(EnumCast::class, TopMangaFilterEnum::class), EnumValidation(TopMangaFilterEnum::class)]
public TopMangaFilterEnum|Optional $filter;
public static function rules(): array
{
return [
"type" => [new EnumRule(MangaTypeEnum::class)],
"filter" => [new EnumRule(TopMangaFilterEnum::class)]
];
}
}

View File

@ -5,6 +5,7 @@ namespace App\Dto;
use App\Casts\EnumCast;
use App\Enums\UserHistoryTypeEnum;
use App\Rules\Attributes\EnumValidation;
use Illuminate\Http\JsonResponse;
use Spatie\Enum\Laravel\Rules\EnumRule;
use Spatie\LaravelData\Attributes\Validation\Nullable;
@ -15,13 +16,6 @@ use Spatie\LaravelData\Attributes\WithCast;
*/
final class UserHistoryLookupCommand extends LookupByUsernameCommand
{
#[WithCast(EnumCast::class, UserHistoryTypeEnum::class)]
#[WithCast(EnumCast::class, UserHistoryTypeEnum::class), EnumValidation(UserHistoryTypeEnum::class)]
public ?UserHistoryTypeEnum $type;
public static function rules(...$args): array
{
return [
"type" => [new EnumRule(UserHistoryTypeEnum::class), new Nullable()]
];
}
}

View File

@ -52,9 +52,15 @@ abstract class QueryAnimeSeasonHandlerBase implements RequestHandler
default => throw new BadRequestException('Invalid season supplied'),
};
$from = Carbon::createFromDate($year, $monthStart, 1);
$from->setTime(0, 0);
$to = Carbon::createFromDate($year, $monthEnd, 1);
$to->setTime(0, 0);
return [
Carbon::createFromDate($year, $monthStart, 1),
Carbon::createFromDate($year, $monthEnd, 1)
$from,
$to
];
}
}

View File

@ -38,10 +38,10 @@ final class QueryCurrentAnimeSeasonHandler extends QueryAnimeSeasonHandlerBase
$month = (int) $date->format('n');
return match ($month) {
in_array($month, range(1, 3)) => [AnimeSeasonEnum::winter(), $year],
in_array($month, range(4, 6)) => [AnimeSeasonEnum::spring(), $year],
in_array($month, range(7, 9)) => [AnimeSeasonEnum::summer(), $year],
in_array($month, range(10, 12)) => [AnimeSeasonEnum::fall(), $year],
1, 2, 3 => [AnimeSeasonEnum::winter(), $year],
4, 5, 6 => [AnimeSeasonEnum::spring(), $year],
7, 8, 9 => [AnimeSeasonEnum::summer(), $year],
10, 11, 12 => [AnimeSeasonEnum::fall(), $year],
default => throw new Exception('Could not generate seasonal string'),
};
}
@ -56,7 +56,7 @@ final class QueryCurrentAnimeSeasonHandler extends QueryAnimeSeasonHandlerBase
* @var Carbon $from
* @var Carbon $to
*/
[$to, $from] = $this->getSeasonRange($year, $season);
[$from, $to] = $this->getSeasonRange($year, $season);
return $this->repository->getAiredBetween($from, $to, $type);
}
}

View File

@ -28,7 +28,7 @@ final class QuerySpecificAnimeSeasonHandler extends QueryAnimeSeasonHandlerBase
* @var Carbon $from
* @var Carbon $to
*/
[$to, $from] = $this->getSeasonRange($request->year, $request->season);
[$from, $to] = $this->getSeasonRange($request->year, $request->season);
return $this->repository->getAiredBetween($from, $to, $type);
}
}

View File

@ -105,7 +105,7 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
public function getAiredBetween(Carbon $from, Carbon $to, ?AnimeTypeEnum $type = null): EloquentBuilder
{
$queryable = $this->queryable(true)->where("aired.from", [
$queryable = $this->queryable(true)->whereBetween("aired.from", [
$from->toAtomString(),
$to->modify("last day of this month")->toAtomString()
]);