adds unapproved, kids, sfw to remaining seasons, schedules endpoints

This commit is contained in:
Irfan 2023-04-23 06:54:32 +05:00 committed by pushrbx
parent 6d5930fbc0
commit d5f3b0904d
5 changed files with 29 additions and 8 deletions

View File

@ -10,6 +10,7 @@ use App\Dto\Concerns\HasKidsParameter;
use App\Dto\Concerns\HasLimitParameter;
use App\Dto\Concerns\HasPageParameter;
use App\Dto\Concerns\HasSfwParameter;
use App\Dto\Concerns\HasUnapprovedParameter;
use App\Enums\AnimeTypeEnum;
use App\Rules\Attributes\EnumValidation;
use Spatie\LaravelData\Attributes\WithCast;
@ -19,7 +20,7 @@ use Spatie\LaravelData\Optional;
abstract class QueryAnimeSeasonCommand extends Data implements DataRequest
{
use HasSfwParameter, HasKidsParameter, HasLimitParameter, HasRequestFingerprint, HasPageParameter;
use HasSfwParameter, HasKidsParameter, HasUnapprovedParameter, HasLimitParameter, HasRequestFingerprint, HasPageParameter;
#[WithCast(EnumCast::class, AnimeTypeEnum::class), EnumValidation(AnimeTypeEnum::class)]
public AnimeTypeEnum|Optional $filter;

View File

@ -3,6 +3,9 @@
namespace App\Dto;
use App\Casts\EnumCast;
use App\Dto\Concerns\HasKidsParameter;
use App\Dto\Concerns\HasSfwParameter;
use App\Dto\Concerns\HasUnapprovedParameter;
use App\Dto\Concerns\MapsRouteParameters;
use App\Enums\AnimeSeasonEnum;
use App\Rules\Attributes\EnumValidation;
@ -13,7 +16,7 @@ use Spatie\LaravelData\Attributes\WithCast;
final class QuerySpecificAnimeSeasonCommand extends QueryAnimeSeasonCommand
{
use MapsRouteParameters;
use MapsRouteParameters, HasSfwParameter, HasKidsParameter, HasUnapprovedParameter;
#[Required, Between(1000, 2999)]
public int $year;

View File

@ -30,6 +30,6 @@ final class QuerySpecificAnimeSeasonHandler extends QueryAnimeSeasonHandlerBase
*/
[$from, $to] = $this->getSeasonRange($request->year, $request->season);
return $this->repository->getAiredBetween($from, $to, $type, $request->kids, $request->sfw);
return $this->repository->getAiredBetween($from, $to, $type, $request->kids, $request->sfw, $request->unapproved);
}
}

View File

@ -23,6 +23,6 @@ final class QueryUpcomingAnimeSeasonHandler extends QueryAnimeSeasonHandlerBase
protected function getSeasonItems($request, ?AnimeTypeEnum $type): Builder
{
return $this->repository->getUpcomingSeasonItems($type);
return $this->repository->getUpcomingSeasonItems($type, $request->kids, $request->sfw, $request->unapproved);
}
}

View File

@ -87,8 +87,8 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
public function getCurrentlyAiring(
?AnimeScheduleFilterEnum $filter = null,
bool $kids = false,
bool $sfw = false,
?bool $kids = false,
?bool $sfw = false,
?bool $unapproved = false
): EloquentBuilder
{
@ -144,6 +144,10 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
$queryable = $queryable->where("type", $type->label);
}
if (!$unapproved) {
$this->excludeUnapprovedItems($queryable);
}
if (!$kids) {
$this->excludeKidsItems($queryable);
}
@ -157,8 +161,9 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
public function getUpcomingSeasonItems(
?AnimeTypeEnum $type = null,
bool $kids = false,
bool $sfw = false
?bool $kids = false,
?bool $sfw = false,
?bool $unapproved = false
): EloquentBuilder
{
$queryable = $this->queryable(true)->where("status", AnimeStatusEnum::upcoming()->label);
@ -167,6 +172,18 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
$queryable = $queryable->where("type", $type->label);
}
if (!$unapproved) {
$this->excludeUnapprovedItems($queryable);
}
if (!$kids) {
$this->excludeKidsItems($queryable);
}
if ($sfw) {
$this->excludeNsfwItems($queryable);
}
return $queryable->orderBy("members", "desc");
}
}