mirror of
https://github.com/jikan-me/jikan-rest.git
synced 2025-02-20 11:23:35 +08:00
adds unapproved
filter #369
This commit is contained in:
parent
1b69c3fe96
commit
6d5930fbc0
@ -24,6 +24,8 @@ interface AnimeRepository extends Repository
|
||||
|
||||
public function excludeNsfwItems(EloquentBuilder|ScoutBuilder &$builder): EloquentBuilder|ScoutBuilder;
|
||||
|
||||
public function excludeUnapprovedItems(EloquentBuilder|ScoutBuilder &$builder): EloquentBuilder|ScoutBuilder;
|
||||
|
||||
public function orderByPopularity(): EloquentBuilder|ScoutBuilder;
|
||||
|
||||
public function orderByFavoriteCount(): EloquentBuilder|ScoutBuilder;
|
||||
@ -33,7 +35,8 @@ interface AnimeRepository extends Repository
|
||||
public function getCurrentlyAiring(
|
||||
?AnimeScheduleFilterEnum $filter = null,
|
||||
bool $kids = false,
|
||||
bool $sfw = false
|
||||
bool $sfw = false,
|
||||
?bool $unapproved = false
|
||||
): EloquentBuilder;
|
||||
|
||||
public function getAiredBetween(
|
||||
@ -41,7 +44,8 @@ interface AnimeRepository extends Repository
|
||||
Carbon $to,
|
||||
?AnimeTypeEnum $type = null,
|
||||
?bool $kids = false,
|
||||
?bool $sfw = false
|
||||
?bool $sfw = false,
|
||||
?bool $unapproved = false
|
||||
): EloquentBuilder;
|
||||
|
||||
public function getUpcomingSeasonItems(?AnimeTypeEnum $type = null): EloquentBuilder;
|
||||
|
16
app/Dto/Concerns/HasUnapprovedParameter.php
Normal file
16
app/Dto/Concerns/HasUnapprovedParameter.php
Normal file
@ -0,0 +1,16 @@
|
||||
<?php
|
||||
|
||||
namespace App\Dto\Concerns;
|
||||
|
||||
use App\Casts\ContextualBooleanCast;
|
||||
use Spatie\LaravelData\Attributes\Validation\BooleanType;
|
||||
use Spatie\LaravelData\Attributes\WithCast;
|
||||
use Spatie\LaravelData\Optional;
|
||||
|
||||
trait HasUnapprovedParameter
|
||||
{
|
||||
use PreparesData;
|
||||
|
||||
#[BooleanType, WithCast(ContextualBooleanCast::class)]
|
||||
public bool|Optional $unapproved = false;
|
||||
}
|
@ -7,9 +7,11 @@ use App\Casts\ContextualBooleanCast;
|
||||
use App\Casts\EnumCast;
|
||||
use App\Concerns\HasRequestFingerprint;
|
||||
use App\Contracts\DataRequest;
|
||||
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\Dto\Concerns\MapsRouteParameters;
|
||||
use App\Dto\Concerns\PreparesData;
|
||||
use App\Enums\AnimeScheduleFilterEnum;
|
||||
@ -25,10 +27,7 @@ use Spatie\LaravelData\Optional;
|
||||
*/
|
||||
final class QueryAnimeSchedulesCommand extends Data implements DataRequest
|
||||
{
|
||||
use HasLimitParameter, HasRequestFingerprint, HasPageParameter, PreparesData, HasSfwParameter, MapsRouteParameters;
|
||||
|
||||
#[BooleanType, WithCast(ContextualBooleanCast::class)]
|
||||
public bool|Optional $kids = false;
|
||||
use HasLimitParameter, HasRequestFingerprint, HasPageParameter, PreparesData, HasSfwParameter, HasKidsParameter, HasUnapprovedParameter, MapsRouteParameters;
|
||||
|
||||
#[WithCast(EnumCast::class, AnimeScheduleFilterEnum::class), EnumValidation(AnimeScheduleFilterEnum::class)]
|
||||
public ?AnimeScheduleFilterEnum $dayFilter;
|
||||
|
@ -24,7 +24,7 @@ final class QueryAnimeSchedulesHandler implements RequestHandler
|
||||
public function handle($request)
|
||||
{
|
||||
$limit = intval($request->limit ?? Env::get("MAX_RESULTS_PER_PAGE", 25));
|
||||
$results = $this->repository->getCurrentlyAiring($request->dayFilter, $request->kids, $request->sfw);
|
||||
$results = $this->repository->getCurrentlyAiring($request->dayFilter, $request->kids, $request->sfw, $request->unapproved);
|
||||
$results = $results->paginate(
|
||||
$limit,
|
||||
["*"],
|
||||
|
@ -55,6 +55,12 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
|
||||
->where("demographics.mal_id", "!=", Constants::GENRE_ANIME_EROTICA);
|
||||
}
|
||||
|
||||
public function excludeUnapprovedItems(EloquentBuilder|ScoutBuilder &$builder): EloquentBuilder|ScoutBuilder
|
||||
{
|
||||
return $builder
|
||||
->where("approved", true);
|
||||
}
|
||||
|
||||
public function excludeKidsItems(EloquentBuilder|ScoutBuilder &$builder): EloquentBuilder|ScoutBuilder
|
||||
{
|
||||
return $builder
|
||||
@ -82,7 +88,9 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
|
||||
public function getCurrentlyAiring(
|
||||
?AnimeScheduleFilterEnum $filter = null,
|
||||
bool $kids = false,
|
||||
bool $sfw = false): EloquentBuilder
|
||||
bool $sfw = false,
|
||||
?bool $unapproved = false
|
||||
): EloquentBuilder
|
||||
{
|
||||
/*
|
||||
* all have status as currently airing
|
||||
@ -94,6 +102,10 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
|
||||
->where("type", AnimeTypeEnum::tv()->label)
|
||||
->where("status", AnimeStatusEnum::airing()->label);
|
||||
|
||||
if (!$unapproved) {
|
||||
$this->excludeUnapprovedItems($queryable);
|
||||
}
|
||||
|
||||
if (!$kids) {
|
||||
$this->excludeKidsItems($queryable);
|
||||
}
|
||||
@ -119,7 +131,8 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
|
||||
Carbon $to,
|
||||
?AnimeTypeEnum $type = null,
|
||||
?bool $kids = false,
|
||||
?bool $sfw = false
|
||||
?bool $sfw = false,
|
||||
?bool $unapproved = false
|
||||
): EloquentBuilder
|
||||
{
|
||||
$queryable = $this->queryable(true)->whereBetween("aired.from", [
|
||||
|
Loading…
x
Reference in New Issue
Block a user