top anime: bugfix rating and sfw not working

This commit is contained in:
Irfan 2023-07-21 21:50:12 +05:00
parent a874f7badf
commit e677fe4857
2 changed files with 14 additions and 4 deletions

View File

@ -4,6 +4,9 @@ namespace App\Dto;
use App\Casts\EnumCast;
use App\Contracts\DataRequest;
use App\Dto\Concerns\HasSfwParameter;
use App\Dto\Concerns\PreparesData;
use App\Enums\AnimeRatingEnum;
use App\Enums\AnimeTypeEnum;
use App\Enums\TopAnimeFilterEnum;
use App\Http\Resources\V4\AnimeCollection;
@ -17,9 +20,14 @@ use Spatie\LaravelData\Optional;
*/
final class QueryTopAnimeItemsCommand extends QueryTopItemsCommand implements DataRequest
{
use PreparesData, HasSfwParameter;
#[WithCast(EnumCast::class, AnimeTypeEnum::class), EnumValidation(AnimeTypeEnum::class)]
public AnimeTypeEnum|Optional $type;
#[WithCast(EnumCast::class, AnimeRatingEnum::class), EnumValidation(AnimeRatingEnum::class)]
public AnimeRatingEnum|Optional $rating;
#[WithCast(EnumCast::class, TopAnimeFilterEnum::class), EnumValidation(TopAnimeFilterEnum::class)]
public TopAnimeFilterEnum|Optional $filter;
}

View File

@ -27,7 +27,7 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
public function getTopAiringItems(): EloquentBuilder|ScoutBuilder
{
return $this->exceptItemsWithAdultRating()
return $this
->where("airing", true)
->whereNotNull("rank")
->where("rank", ">", 0)
@ -36,7 +36,7 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
public function getTopUpcomingItems(): EloquentBuilder|ScoutBuilder
{
return $this->exceptItemsWithAdultRating()
return $this
->where("status", AnimeStatusEnum::upcoming()->label)
->whereNotNull("rank")
->where("rank", ">=", 0)
@ -69,12 +69,14 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
public function orderByPopularity(): EloquentBuilder|ScoutBuilder
{
return $this->exceptItemsWithAdultRating()->orderBy("members", "desc");
return $this
->orderBy("members", "desc");
}
public function orderByFavoriteCount(): EloquentBuilder|ScoutBuilder
{
return $this->exceptItemsWithAdultRating()->orderBy("favorites", "desc");
return $this
->orderBy("favorites", "desc");
}
public function orderByRank(): EloquentBuilder|ScoutBuilder