mirror of
https://github.com/jikan-me/jikan-rest.git
synced 2025-02-20 11:23:35 +08:00
Merge pull request #448 from jikan-me/bugfix/seasonal-102123
bugfix: only allow results that are within specified season/year and nulls
This commit is contained in:
commit
3d822c2afb
@ -4,6 +4,7 @@ namespace App\Contracts;
|
||||
|
||||
use App\Anime;
|
||||
use App\Enums\AnimeScheduleFilterEnum;
|
||||
use App\Enums\AnimeSeasonEnum;
|
||||
use App\Enums\AnimeTypeEnum;
|
||||
use Illuminate\Contracts\Database\Query\Builder as EloquentBuilder;
|
||||
use Illuminate\Support\Carbon;
|
||||
@ -41,7 +42,8 @@ interface AnimeRepository extends Repository
|
||||
public function getAiredBetween(
|
||||
Carbon $from,
|
||||
Carbon $to,
|
||||
?AnimeTypeEnum $type = null
|
||||
?AnimeTypeEnum $type = null,
|
||||
?string $premiered = null
|
||||
): EloquentBuilder;
|
||||
|
||||
public function getUpcomingSeasonItems(?AnimeTypeEnum $type = null): EloquentBuilder;
|
||||
|
@ -32,6 +32,8 @@ abstract class QueryAnimeSeasonHandlerBase implements RequestHandler
|
||||
{
|
||||
$requestParams = collect($request->all());
|
||||
$type = $requestParams->has("filter") ? $request->filter : null;
|
||||
$season = $requestParams->has("season") ? $request->season : null;
|
||||
$year = $requestParams->has("year") ? $request->year : null;
|
||||
$results = $this->getSeasonItems($request, $type);
|
||||
// apply sfw, kids and unapproved filters
|
||||
/** @noinspection PhpUndefinedMethodInspection */
|
||||
|
@ -52,6 +52,8 @@ final class QueryCurrentAnimeSeasonHandler extends QueryAnimeSeasonHandlerBase
|
||||
* @var Carbon $to
|
||||
*/
|
||||
[$from, $to] = $this->getSeasonRange($year, $season);
|
||||
return $this->repository->getAiredBetween($from, $to, $type);
|
||||
$premiered = ucfirst($season)." {$year}";
|
||||
|
||||
return $this->repository->getAiredBetween($from, $to, $type, $premiered);
|
||||
}
|
||||
}
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace App\Features;
|
||||
|
||||
use App\Dto\QuerySpecificAnimeSeasonCommand;
|
||||
use App\Enums\AnimeSeasonEnum;
|
||||
use App\Enums\AnimeStatusEnum;
|
||||
use App\Enums\AnimeTypeEnum;
|
||||
use Illuminate\Contracts\Database\Query\Builder;
|
||||
@ -26,8 +27,9 @@ final class QuerySpecificAnimeSeasonHandler extends QueryAnimeSeasonHandlerBase
|
||||
*/
|
||||
|
||||
[$from, $to] = $this->getSeasonRange($request->year, $request->season);
|
||||
$premiered = ucfirst($request->season)." {$request->year}";
|
||||
|
||||
return $this->repository->getAiredBetween($from, $to, $type);
|
||||
return $this->repository->getAiredBetween($from, $to, $type, $premiered);
|
||||
// ->where("status", "!=", AnimeStatusEnum::upcoming()->label);
|
||||
}
|
||||
}
|
||||
|
@ -7,6 +7,7 @@ use App\Contracts\AnimeRepository;
|
||||
use App\Contracts\Repository;
|
||||
use App\Enums\AnimeRatingEnum;
|
||||
use App\Enums\AnimeScheduleFilterEnum;
|
||||
use App\Enums\AnimeSeasonEnum;
|
||||
use App\Enums\AnimeStatusEnum;
|
||||
use App\Enums\AnimeTypeEnum;
|
||||
use Illuminate\Contracts\Database\Query\Builder as EloquentBuilder;
|
||||
@ -115,7 +116,8 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
|
||||
public function getAiredBetween(
|
||||
Carbon $from,
|
||||
Carbon $to,
|
||||
?AnimeTypeEnum $type = null
|
||||
?AnimeTypeEnum $type = null,
|
||||
?string $premiered = null
|
||||
): EloquentBuilder
|
||||
{
|
||||
// $queryable = $this->queryable(true)->whereBetween("aired.from", [
|
||||
@ -124,7 +126,16 @@ final class DefaultAnimeRepository extends DatabaseRepository implements AnimeRe
|
||||
// ]);
|
||||
|
||||
/** @noinspection PhpParamsInspection */
|
||||
$queryable = $this->queryable(true)->whereRaw([
|
||||
$queryable = $this->queryable(true);
|
||||
|
||||
if ($premiered !== null) {
|
||||
$queryable = $queryable
|
||||
->where("premiered", null)
|
||||
->orWhere("premiered", $premiered);
|
||||
}
|
||||
|
||||
$queryable = $queryable
|
||||
->whereRaw([
|
||||
"aired.from" => [
|
||||
'$gte' => $from->toAtomString(),
|
||||
'$lte' => $to->modify("last day of this month")->toAtomString()
|
||||
|
Loading…
x
Reference in New Issue
Block a user