mirror of
https://github.com/jikan-me/jikan-rest.git
synced 2025-02-20 11:23:35 +08:00
Top Anime/Manga: updates default sorting for filters
This commit is contained in:
parent
e5f24aefbd
commit
1fed924344
@ -9,6 +9,7 @@ use Illuminate\Contracts\Database\Query\Builder as EloquentBuilder;
|
||||
use Illuminate\Support\Carbon;
|
||||
use Illuminate\Support\Collection;
|
||||
use Laravel\Scout\Builder as ScoutBuilder;
|
||||
use Laravel\Scout\Scout;
|
||||
|
||||
/**
|
||||
* @implements Repository<Anime>
|
||||
@ -44,4 +45,6 @@ interface AnimeRepository extends Repository
|
||||
): EloquentBuilder;
|
||||
|
||||
public function getUpcomingSeasonItems(?AnimeTypeEnum $type = null): EloquentBuilder;
|
||||
|
||||
public function orderByScore(): EloquentBuilder|ScoutBuilder;
|
||||
}
|
||||
|
@ -22,4 +22,7 @@ interface MangaRepository extends Repository
|
||||
public function orderByRank(): EloquentBuilder|ScoutBuilder;
|
||||
|
||||
public function exceptItemsWithAdultRating(): EloquentBuilder|ScoutBuilder;
|
||||
|
||||
public function orderByScore(): EloquentBuilder|ScoutBuilder;
|
||||
|
||||
}
|
||||
|
@ -36,7 +36,7 @@ final class QueryTopAnimeItemsHandler implements RequestHandler
|
||||
TopAnimeFilterEnum::upcoming() => $this->repository->getTopUpcomingItems(),
|
||||
TopAnimeFilterEnum::bypopularity() => $this->repository->orderByPopularity(),
|
||||
TopAnimeFilterEnum::favorite() => $this->repository->orderByFavoriteCount(),
|
||||
default => $this->repository->orderByRank()
|
||||
default => $this->repository->orderByScore()
|
||||
};
|
||||
|
||||
$builder = $builder->filter($requestParams);
|
||||
|
@ -35,7 +35,7 @@ class QueryTopMangaItemsHandler implements RequestHandler
|
||||
TopMangaFilterEnum::upcoming() => $this->repository->getTopUpcomingItems(),
|
||||
TopMangaFilterEnum::bypopularity() => $this->repository->orderByPopularity(),
|
||||
TopMangaFilterEnum::favorite() => $this->repository->orderByFavoriteCount(),
|
||||
default => $this->repository->orderByRank()
|
||||
default => $this->repository->orderByScore()
|
||||
};
|
||||
|
||||
$builder = $builder->filter($requestParams);
|
||||
|
@ -28,19 +28,15 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
|
||||
public function getTopAiringItems(): EloquentBuilder|ScoutBuilder
|
||||
{
|
||||
return $this
|
||||
->where("airing", true)
|
||||
->whereNotNull("rank")
|
||||
->where("rank", ">", 0)
|
||||
->orderBy("rank");
|
||||
->orderByScore()
|
||||
->where("airing", true);
|
||||
}
|
||||
|
||||
public function getTopUpcomingItems(): EloquentBuilder|ScoutBuilder
|
||||
{
|
||||
return $this
|
||||
->where("status", AnimeStatusEnum::upcoming()->label)
|
||||
->whereNotNull("rank")
|
||||
->where("rank", ">=", 0)
|
||||
->orderBy("rank");
|
||||
->orderByPopularity()
|
||||
->where("status", AnimeStatusEnum::upcoming()->label);
|
||||
}
|
||||
|
||||
public function exceptItemsWithAdultRating(): EloquentBuilder|ScoutBuilder
|
||||
@ -154,4 +150,11 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
|
||||
|
||||
return $queryable->orderBy("members", "desc");
|
||||
}
|
||||
|
||||
public function orderByScore(): EloquentBuilder|ScoutBuilder
|
||||
{
|
||||
return $this
|
||||
->queryable()
|
||||
->orderBy("score", "desc");
|
||||
}
|
||||
}
|
||||
|
@ -21,20 +21,22 @@ final class DefaultMangaRepository extends DatabaseRepository implements MangaRe
|
||||
public function getTopPublishingItems(): EloquentBuilder|ScoutBuilder
|
||||
{
|
||||
return $this
|
||||
->orderByRank()
|
||||
->orderByPopularity()
|
||||
->where("publishing", true);
|
||||
}
|
||||
|
||||
public function getTopUpcomingItems(): EloquentBuilder|ScoutBuilder
|
||||
{
|
||||
return $this
|
||||
->orderByRank()
|
||||
->orderByPopularity()
|
||||
->where("status", MangaStatusEnum::upcoming()->label);
|
||||
}
|
||||
|
||||
public function orderByPopularity(): EloquentBuilder|ScoutBuilder
|
||||
{
|
||||
return $this->queryable()->orderBy("members", "desc");
|
||||
return $this
|
||||
->queryable()
|
||||
->orderBy("members", "desc");
|
||||
}
|
||||
|
||||
public function orderByFavoriteCount(): EloquentBuilder|ScoutBuilder
|
||||
@ -55,4 +57,11 @@ final class DefaultMangaRepository extends DatabaseRepository implements MangaRe
|
||||
/** @noinspection PhpUndefinedMethodInspection */
|
||||
return $this->queryable()->exceptItemsWithAdultRating();
|
||||
}
|
||||
|
||||
public function orderByScore(): EloquentBuilder|ScoutBuilder
|
||||
{
|
||||
return $this
|
||||
->queryable()
|
||||
->orderBy("score", "desc");
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user