add new /random/list/* endpoints

This commit is contained in:
Irfan 2024-11-13 21:30:10 +05:00
parent 3b59908e4d
commit f20e40c138
24 changed files with 515 additions and 73 deletions

View File

@ -3,19 +3,16 @@
namespace App\Dto; namespace App\Dto;
use App\Contracts\DataRequest; use App\Contracts\DataRequest;
use App\Dto\Concerns\HasLimitParameterWithSmallerMax;
use App\Dto\Concerns\HasSfwParameter; use App\Dto\Concerns\HasSfwParameter;
use App\Dto\Concerns\HasUnapprovedParameter; use App\Dto\Concerns\HasUnapprovedParameter;
use App\Http\Resources\V4\AnimeCollection;
use App\Http\Resources\V4\AnimeResource; use App\Http\Resources\V4\AnimeResource;
use Spatie\LaravelData\Data; use Spatie\LaravelData\Data;
/** /**
* @implements DataRequest<AnimeResource|AnimeCollection> * @implements DataRequest<AnimeResource>
*/ */
final class QueryRandomAnimeCommand extends Data implements DataRequest final class QueryRandomAnimeCommand extends Data implements DataRequest
{ {
use HasSfwParameter, use HasSfwParameter,
HasUnapprovedParameter, HasUnapprovedParameter;
HasLimitParameterWithSmallerMax;
} }

View File

@ -0,0 +1,20 @@
<?php
namespace App\Dto;
use App\Contracts\DataRequest;
use App\Dto\Concerns\HasLimitParameterWithSmallerMax;
use App\Dto\Concerns\HasSfwParameter;
use App\Dto\Concerns\HasUnapprovedParameter;
use App\Http\Resources\V4\AnimeCollection;
use Spatie\LaravelData\Data;
/**
* @implements DataRequest<AnimeCollection>
*/
final class QueryRandomAnimeListCommand extends Data implements DataRequest
{
use HasSfwParameter,
HasUnapprovedParameter,
HasLimitParameterWithSmallerMax;
}

View File

@ -12,5 +12,4 @@ use Spatie\LaravelData\Data;
*/ */
final class QueryRandomCharacterCommand extends Data implements DataRequest final class QueryRandomCharacterCommand extends Data implements DataRequest
{ {
use HasLimitParameterWithSmallerMax;
} }

View File

@ -0,0 +1,16 @@
<?php
namespace App\Dto;
use App\Contracts\DataRequest;
use App\Dto\Concerns\HasLimitParameterWithSmallerMax;
use App\Http\Resources\V4\CharacterCollection;
use Spatie\LaravelData\Data;
/**
* @implements DataRequest<CharacterCollection>
*/
final class QueryRandomCharacterListCommand extends Data implements DataRequest
{
use HasLimitParameterWithSmallerMax;
}

View File

@ -3,19 +3,16 @@
namespace App\Dto; namespace App\Dto;
use App\Contracts\DataRequest; use App\Contracts\DataRequest;
use App\Dto\Concerns\HasLimitParameterWithSmallerMax;
use App\Dto\Concerns\HasSfwParameter; use App\Dto\Concerns\HasSfwParameter;
use App\Dto\Concerns\HasUnapprovedParameter; use App\Dto\Concerns\HasUnapprovedParameter;
use App\Http\Resources\V4\MangaCollection;
use App\Http\Resources\V4\MangaResource; use App\Http\Resources\V4\MangaResource;
use Spatie\LaravelData\Data; use Spatie\LaravelData\Data;
/** /**
* @implements DataRequest<MangaResource|MangaCollection> * @implements DataRequest<MangaResource>
*/ */
final class QueryRandomMangaCommand extends Data implements DataRequest final class QueryRandomMangaCommand extends Data implements DataRequest
{ {
use HasSfwParameter, use HasSfwParameter,
HasUnapprovedParameter, HasUnapprovedParameter;
HasLimitParameterWithSmallerMax;
} }

View File

@ -0,0 +1,20 @@
<?php
namespace App\Dto;
use App\Contracts\DataRequest;
use App\Dto\Concerns\HasLimitParameterWithSmallerMax;
use App\Dto\Concerns\HasSfwParameter;
use App\Dto\Concerns\HasUnapprovedParameter;
use App\Http\Resources\V4\MangaCollection;
use Spatie\LaravelData\Data;
/**
* @implements DataRequest<MangaCollection>
*/
final class QueryRandomMangaListCommand extends Data implements DataRequest
{
use HasSfwParameter,
HasUnapprovedParameter,
HasLimitParameterWithSmallerMax;
}

View File

@ -3,15 +3,12 @@
namespace App\Dto; namespace App\Dto;
use App\Contracts\DataRequest; use App\Contracts\DataRequest;
use App\Dto\Concerns\HasLimitParameterWithSmallerMax;
use App\Http\Resources\V4\PersonCollection;
use App\Http\Resources\V4\PersonResource; use App\Http\Resources\V4\PersonResource;
use Spatie\LaravelData\Data; use Spatie\LaravelData\Data;
/** /**
* @implements DataRequest<PersonResource|PersonCollection> * @implements DataRequest<PersonResource>
*/ */
final class QueryRandomPersonCommand extends Data implements DataRequest final class QueryRandomPersonCommand extends Data implements DataRequest
{ {
use HasLimitParameterWithSmallerMax;
} }

View File

@ -0,0 +1,16 @@
<?php
namespace App\Dto;
use App\Contracts\DataRequest;
use App\Dto\Concerns\HasLimitParameterWithSmallerMax;
use App\Http\Resources\V4\PersonCollection;
use Spatie\LaravelData\Data;
/**
* @implements DataRequest<PersonCollection>
*/
final class QueryRandomPersonListCommand extends Data implements DataRequest
{
use HasLimitParameterWithSmallerMax;
}

View File

@ -12,5 +12,4 @@ use Spatie\LaravelData\Data;
*/ */
final class QueryRandomUserCommand extends Data implements DataRequest final class QueryRandomUserCommand extends Data implements DataRequest
{ {
use HasLimitParameterWithSmallerMax;
} }

View File

@ -0,0 +1,16 @@
<?php
namespace App\Dto;
use App\Contracts\DataRequest;
use App\Dto\Concerns\HasLimitParameterWithSmallerMax;
use App\Http\Resources\V4\UserCollection;
use Spatie\LaravelData\Data;
/**
* @implements DataRequest<UserCollection>
*/
final class QueryRandomUserListCommand extends Data implements DataRequest
{
use HasLimitParameterWithSmallerMax;
}

View File

@ -5,31 +5,27 @@ namespace App\Features;
use App\Anime; use App\Anime;
use App\Contracts\RequestHandler; use App\Contracts\RequestHandler;
use App\Dto\QueryRandomAnimeCommand; use App\Dto\QueryRandomAnimeCommand;
use App\Http\Resources\V4\AnimeCollection;
use App\Http\Resources\V4\AnimeResource; use App\Http\Resources\V4\AnimeResource;
use Spatie\LaravelData\Optional; use Spatie\LaravelData\Optional;
/** /**
* @implements RequestHandler<QueryRandomAnimeCommand, AnimeResource|AnimeCollection> * @implements RequestHandler<QueryRandomAnimeCommand, AnimeResource>
*/ */
final class QueryRandomAnimeHandler implements RequestHandler final class QueryRandomAnimeHandler implements RequestHandler
{ {
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function handle($request): AnimeResource|AnimeCollection public function handle($request): AnimeResource
{ {
$queryable = Anime::query(); $queryable = Anime::query();
$sfwParam = $request->sfw instanceof Optional ? false : $request->sfw; $sfwParam = $request->sfw instanceof Optional ? false : $request->sfw;
$unapprovedParam = $request->unapproved instanceof Optional ? false : $request->unapproved; $unapprovedParam = $request->unapproved instanceof Optional ? false : $request->unapproved;
$limit = $request->limit instanceof Optional ? 1 : $request->limit;
$results = $queryable->random($limit, $sfwParam, $unapprovedParam); $results = $queryable->random(1, $sfwParam, $unapprovedParam);
return $results->count() === 1 return new AnimeResource($results->first());
? new AnimeResource($results->first())
: new AnimeCollection($results, false);
} }
/** /**

View File

@ -0,0 +1,40 @@
<?php
namespace App\Features;
use App\Anime;
use App\Contracts\RequestHandler;
use App\Dto\QueryRandomAnimeCommand;
use App\Dto\QueryRandomAnimeListCommand;
use App\Http\Resources\V4\AnimeCollection;
use Spatie\LaravelData\Optional;
/**
* @implements RequestHandler<QueryRandomAnimeCommand, AnimeCollection>
*/
final class QueryRandomAnimeListHandler implements RequestHandler
{
/**
* @inheritDoc
*/
public function handle($request): AnimeCollection
{
$queryable = Anime::query();
$sfwParam = $request->sfw instanceof Optional ? false : $request->sfw;
$unapprovedParam = $request->unapproved instanceof Optional ? false : $request->unapproved;
$limit = $request->limit instanceof Optional ? 1 : $request->limit;
$results = $queryable->random($limit, $sfwParam, $unapprovedParam);
return new AnimeCollection($results, false);
}
/**
* @inheritDoc
*/
public function requestClass(): string
{
return QueryRandomAnimeListCommand::class;
}
}

View File

@ -5,12 +5,10 @@ namespace App\Features;
use App\Character; use App\Character;
use App\Contracts\RequestHandler; use App\Contracts\RequestHandler;
use App\Dto\QueryRandomCharacterCommand; use App\Dto\QueryRandomCharacterCommand;
use App\Http\Resources\V4\CharacterCollection;
use App\Http\Resources\V4\CharacterResource; use App\Http\Resources\V4\CharacterResource;
use Spatie\LaravelData\Optional;
/** /**
* @extends QueryRandomCharacterHandler<QueryRandomCharacterCommand, CharacterResource|CharacterCollection> * @extends QueryRandomCharacterHandler<QueryRandomCharacterCommand, CharacterResource>
*/ */
final class QueryRandomCharacterHandler implements RequestHandler final class QueryRandomCharacterHandler implements RequestHandler
{ {
@ -18,17 +16,13 @@ final class QueryRandomCharacterHandler implements RequestHandler
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function handle($request): CharacterResource|CharacterCollection public function handle($request): CharacterResource
{ {
$queryable = Character::query(); return new CharacterResource(
Character::query()
$limit = $request->limit instanceof Optional ? 1 : $request->limit; ->random(1)
->first()
$results = $queryable->random($limit); );
return $results->count() === 1
? new CharacterResource($results->first())
: new CharacterCollection($results, false);
} }
/** /**

View File

@ -0,0 +1,35 @@
<?php
namespace App\Features;
use App\Character;
use App\Contracts\RequestHandler;
use App\Dto\QueryRandomCharacterListCommand;
use App\Http\Resources\V4\CharacterCollection;
use Spatie\LaravelData\Optional;
/**
* @implements RequestHandler<QueryRandomCharacterListCommand, CharacterCollection>
*/
final class QueryRandomCharacterListHandler implements RequestHandler
{
/**
* @inheritDoc
*/
public function handle($request): CharacterCollection
{
$queryable = Character::query();
$limit = $request->limit instanceof Optional ? 1 : $request->limit;
$results = $queryable->random($limit);
return new CharacterCollection($results, false);
}
/**
* @inheritDoc
*/
public function requestClass(): string
{
return QueryRandomCharacterListCommand::class;
}
}

View File

@ -4,32 +4,27 @@ namespace App\Features;
use App\Contracts\RequestHandler; use App\Contracts\RequestHandler;
use App\Dto\QueryRandomMangaCommand; use App\Dto\QueryRandomMangaCommand;
use App\Http\Resources\V4\MangaCollection;
use App\Http\Resources\V4\MangaResource; use App\Http\Resources\V4\MangaResource;
use App\Manga; use App\Manga;
use Spatie\LaravelData\Optional; use Spatie\LaravelData\Optional;
/** /**
* @implements RequestHandler<QueryRandomMangaCommand, MangaResource|MangaCollection> * @implements RequestHandler<QueryRandomMangaCommand, MangaResource>
*/ */
final class QueryRandomMangaHandler implements RequestHandler final class QueryRandomMangaHandler implements RequestHandler
{ {
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function handle($request): MangaResource|MangaCollection public function handle($request): MangaResource
{ {
$queryable = Manga::query(); $queryable = Manga::query();
$sfwParam = $request->sfw instanceof Optional ? false : $request->sfw; $sfwParam = $request->sfw instanceof Optional ? false : $request->sfw;
$unapprovedParam = $request->unapproved instanceof Optional ? false : $request->unapproved; $unapprovedParam = $request->unapproved instanceof Optional ? false : $request->unapproved;
$limit = $request->limit instanceof Optional ? 1 : $request->limit; $results = $queryable->random(1, $sfwParam, $unapprovedParam);
$results = $queryable->random($limit, $sfwParam, $unapprovedParam); return new MangaResource($results->first());
return $results->count() === 1
? new MangaResource($results->first())
: new MangaCollection($results, false);
} }
/** /**

View File

@ -0,0 +1,40 @@
<?php
namespace App\Features;
use App\Contracts\RequestHandler;
use App\Dto\QueryRandomMangaCommand;
use App\Dto\QueryRandomMangaListCommand;
use App\Http\Resources\V4\MangaCollection;
use App\Manga;
use Spatie\LaravelData\Optional;
/**
* @implements RequestHandler<QueryRandomMangaCommand, MangaCollection>
*/
final class QueryRandomMangaListHandler implements RequestHandler
{
/**
* @inheritDoc
*/
public function handle($request): MangaCollection
{
$queryable = Manga::query();
$sfwParam = $request->sfw instanceof Optional ? false : $request->sfw;
$unapprovedParam = $request->unapproved instanceof Optional ? false : $request->unapproved;
$limit = $request->limit instanceof Optional ? 1 : $request->limit;
$results = $queryable->random($limit, $sfwParam, $unapprovedParam);
return new MangaCollection($results, false);
}
/**
* @inheritDoc
*/
public function requestClass(): string
{
return QueryRandomMangaListCommand::class;
}
}

View File

@ -4,13 +4,11 @@ namespace App\Features;
use App\Contracts\RequestHandler; use App\Contracts\RequestHandler;
use App\Dto\QueryRandomPersonCommand; use App\Dto\QueryRandomPersonCommand;
use App\Http\Resources\V4\PersonCollection;
use App\Http\Resources\V4\PersonResource; use App\Http\Resources\V4\PersonResource;
use App\Person; use App\Person;
use Spatie\LaravelData\Optional;
/** /**
* @extends RequestHandler<QueryRandomPersonCommand, PersonResource|PersonCollection> * @extends RequestHandler<QueryRandomPersonCommand, PersonResource>
*/ */
final class QueryRandomPersonHandler implements RequestHandler final class QueryRandomPersonHandler implements RequestHandler
{ {
@ -18,17 +16,13 @@ final class QueryRandomPersonHandler implements RequestHandler
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function handle($request): PersonResource|PersonCollection public function handle($request): PersonResource
{ {
$queryable = Person::query(); return new PersonResource(
Person::query()
$limit = $request->limit instanceof Optional ? 1 : $request->limit; ->random()
->first()
$results = $queryable->random($limit); );
return $results->count() === 1
? new PersonResource($results->first())
: new PersonCollection($results, false);
} }
/** /**

View File

@ -0,0 +1,37 @@
<?php
namespace App\Features;
use App\Contracts\RequestHandler;
use App\Dto\QueryRandomPersonCommand;
use App\Dto\QueryRandomPersonListCommand;
use App\Http\Resources\V4\PersonCollection;
use App\Person;
use Spatie\LaravelData\Optional;
/**
* @extends RequestHandler<QueryRandomPersonCommand, PersonCollection>
*/
final class QueryRandomPersonListHandler implements RequestHandler
{
/**
* @inheritDoc
*/
public function handle($request): PersonCollection
{
$queryable = Person::query();
$limit = $request->limit instanceof Optional ? 1 : $request->limit;
$results = $queryable->random($limit);
return new PersonCollection($results, false);
}
/**
* @inheritDoc
*/
public function requestClass(): string
{
return QueryRandomPersonListCommand::class;
}
}

View File

@ -5,29 +5,22 @@ namespace App\Features;
use App\Contracts\RequestHandler; use App\Contracts\RequestHandler;
use App\Dto\QueryRandomUserCommand; use App\Dto\QueryRandomUserCommand;
use App\Http\Resources\V4\ProfileResource; use App\Http\Resources\V4\ProfileResource;
use App\Http\Resources\V4\UserCollection;
use App\Profile; use App\Profile;
use Spatie\LaravelData\Optional;
/** /**
* @extends RequestHandler<QueryRandomUserCommand, ProfileResource|UserCollection> * @extends RequestHandler<QueryRandomUserCommand, ProfileResource>
*/ */
final class QueryRandomUserHandler implements RequestHandler final class QueryRandomUserHandler implements RequestHandler
{ {
/** /**
* @inheritDoc * @inheritDoc
*/ */
public function handle($request): ProfileResource|UserCollection public function handle($request): ProfileResource
{ {
$queryable = Profile::query(); $queryable = Profile::query();
$results = $queryable->random(1);
$limit = $request->limit instanceof Optional ? 1 : $request->limit; return new ProfileResource($results->first());
$results = $queryable->random($limit);
return $results->count() === 1
? new ProfileResource($results->first())
: new UserCollection($results, false);
} }
/** /**

View File

@ -0,0 +1,37 @@
<?php
namespace App\Features;
use App\Contracts\RequestHandler;
use App\Dto\QueryRandomUserCommand;
use App\Dto\QueryRandomUserListCommand;
use App\Http\Resources\V4\ProfileResource;
use App\Http\Resources\V4\UserCollection;
use App\Profile;
use Spatie\LaravelData\Optional;
/**
* @extends RequestHandler<QueryRandomUserCommand, UserCollection>
*/
final class QueryRandomUserListHandler implements RequestHandler
{
/**
* @inheritDoc
*/
public function handle($request): UserCollection
{
$queryable = Profile::query();
$limit = $request->limit instanceof Optional ? 1 : $request->limit;
$results = $queryable->random($limit);
return new UserCollection($results, false);
}
/**
* @inheritDoc
*/
public function requestClass(): string
{
return QueryRandomUserListCommand::class;
}
}

View File

@ -3,10 +3,14 @@
namespace App\Http\Controllers\V4DB; namespace App\Http\Controllers\V4DB;
use App\Dto\QueryRandomAnimeCommand; use App\Dto\QueryRandomAnimeCommand;
use App\Dto\QueryRandomAnimeListCommand;
use App\Dto\QueryRandomCharacterCommand; use App\Dto\QueryRandomCharacterCommand;
use App\Dto\QueryRandomCharacterListCommand;
use App\Dto\QueryRandomMangaCommand; use App\Dto\QueryRandomMangaCommand;
use App\Dto\QueryRandomPersonCommand; use App\Dto\QueryRandomPersonCommand;
use App\Dto\QueryRandomPersonListCommand;
use App\Dto\QueryRandomUserCommand; use App\Dto\QueryRandomUserCommand;
use App\Dto\QueryRandomUserListCommand;
class RandomController extends Controller class RandomController extends Controller
@ -44,7 +48,7 @@ class RandomController extends Controller
* *
* @OA\Response( * @OA\Response(
* response="200", * response="200",
* description="Returns a single random anime resource or multiple resources in an array when `limit` is supplied", * description="Returns a single random anime resource",
* @OA\JsonContent( * @OA\JsonContent(
* @OA\Property( * @OA\Property(
* property="data", * property="data",
@ -63,6 +67,39 @@ class RandomController extends Controller
return $this->mediator->send($command); return $this->mediator->send($command);
} }
/**
* @OA\Get(
* path="/random/list/anime",
* operationId="getRandomAnimeList",
* tags={"random"},
*
* @OA\Parameter(ref="#/components/parameters/limit"),
*
* @OA\Response(
* response="200",
* description="Returns multiple anime resources. You can use `limit` to control the number of items returned. By default it returns 1 and maximum 5",
* @OA\JsonContent(
* @OA\Property(
* property="data",
* type="array",
* @OA\Items(
* type="object",
* ref="#/components/schemas/anime"
* ),
* ),
* )
* ),
* @OA\Response(
* response="400",
* description="Error: Bad request. When required parameters were not supplied.",
* ),
* ),
*/
public function animeList(QueryRandomAnimeListCommand $command)
{
return $this->mediator->send($command);
}
/** /**
* @OA\Get( * @OA\Get(
* path="/random/manga", * path="/random/manga",
@ -92,6 +129,39 @@ class RandomController extends Controller
return $this->mediator->send($command); return $this->mediator->send($command);
} }
/**
* @OA\Get(
* path="/random/list/manga",
* operationId="getRandomMangaList",
* tags={"random"},
*
* @OA\Parameter(ref="#/components/parameters/limit"),
*
* @OA\Response(
* response="200",
* description="Returns multiple manga resources. You can use `limit` to control the number of items returned. By default it returns 1 and maximum 5",
* @OA\JsonContent(
* @OA\Property(
* property="data",
* type="array",
* @OA\Items(
* type="object",
* ref="#/components/schemas/manga"
* ),
* ),
* )
* ),
* @OA\Response(
* response="400",
* description="Error: Bad request. When required parameters were not supplied.",
* ),
* ),
*/
public function mangaList(QueryRandomAnimeListCommand $command)
{
return $this->mediator->send($command);
}
/** /**
* @OA\Get( * @OA\Get(
* path="/random/characters", * path="/random/characters",
@ -121,6 +191,39 @@ class RandomController extends Controller
return $this->mediator->send($command); return $this->mediator->send($command);
} }
/**
* @OA\Get(
* path="/random/list/characters",
* operationId="getRandomCharactersList",
* tags={"random"},
*
* @OA\Parameter(ref="#/components/parameters/limit"),
*
* @OA\Response(
* response="200",
* description="Returns multiple character resources. You can use `limit` to control the number of items returned. By default it returns 1 and maximum 5",
* @OA\JsonContent(
* @OA\Property(
* property="data",
* type="array",
* @OA\Items(
* type="object",
* ref="#/components/schemas/character"
* ),
* ),
* )
* ),
* @OA\Response(
* response="400",
* description="Error: Bad request. When required parameters were not supplied.",
* ),
* ),
*/
public function charactersList(QueryRandomCharacterListCommand $command)
{
return $this->mediator->send($command);
}
/** /**
* @OA\Get( * @OA\Get(
* path="/random/people", * path="/random/people",
@ -150,6 +253,39 @@ class RandomController extends Controller
return $this->mediator->send($command); return $this->mediator->send($command);
} }
/**
* @OA\Get(
* path="/random/list/people",
* operationId="getRandomPeopleList",
* tags={"random"},
*
* @OA\Parameter(ref="#/components/parameters/limit"),
*
* @OA\Response(
* response="200",
* description="Returns multiple people resources. You can use `limit` to control the number of items returned. By default it returns 1 and maximum 5",
* @OA\JsonContent(
* @OA\Property(
* property="data",
* type="array",
* @OA\Items(
* type="object",
* ref="#/components/schemas/person"
* ),
* ),
* )
* ),
* @OA\Response(
* response="400",
* description="Error: Bad request. When required parameters were not supplied.",
* ),
* ),
*/
public function peopleList(QueryRandomPersonListCommand $command)
{
return $this->mediator->send($command);
}
/** /**
* @OA\Get( * @OA\Get(
* path="/random/users", * path="/random/users",
@ -178,4 +314,37 @@ class RandomController extends Controller
{ {
return $this->mediator->send($command); return $this->mediator->send($command);
} }
/**
* @OA\Get(
* path="/random/list/users",
* operationId="getRandomUsersList",
* tags={"random"},
*
* @OA\Parameter(ref="#/components/parameters/limit"),
*
* @OA\Response(
* response="200",
* description="Returns multiple user resources. You can use `limit` to control the number of items returned. By default it returns 1 and maximum 5",
* @OA\JsonContent(
* @OA\Property(
* property="data",
* type="array",
* @OA\Items(
* type="object",
* ref="#/components/schemas/user_profile"
* ),
* ),
* )
* ),
* @OA\Response(
* response="400",
* description="Error: Bad request. When required parameters were not supplied.",
* ),
* ),
*/
public function usersList(QueryRandomUserListCommand $command)
{
return $this->mediator->send($command);
}
} }

View File

@ -5,18 +5,21 @@ namespace App\Http\Middleware;
use App\Http\HttpHelper; use App\Http\HttpHelper;
use App\Support\JikanConfig; use App\Support\JikanConfig;
use Closure; use Closure;
use Illuminate\Support\Env;
use Illuminate\Support\Facades\Cache; use Illuminate\Support\Facades\Cache;
use Jikan\Exception\BadResponseException;
class MicroCaching class MicroCaching
{ {
private const NO_CACHING = [ private const NO_CACHING = [
'RandomController@anime', 'RandomController@anime',
'RandomController@animeList',
'RandomController@manga', 'RandomController@manga',
'RandomController@mangaList',
'RandomController@characters', 'RandomController@characters',
'RandomController@charactersList',
'RandomController@people', 'RandomController@people',
'RandomController@peopleList',
'RandomController@users', 'RandomController@users',
'RandomController@usersList',
'InsightsController@main' 'InsightsController@main'
]; ];

View File

@ -307,10 +307,15 @@ class AppServiceProvider extends ServiceProvider
// automatically resolvable dependencies or no dependencies at all // automatically resolvable dependencies or no dependencies at all
$requestHandlersWithNoDependencies = [ $requestHandlersWithNoDependencies = [
Features\QueryRandomAnimeHandler::class, Features\QueryRandomAnimeHandler::class,
Features\QueryRandomAnimeListHandler::class,
Features\QueryRandomMangaHandler::class, Features\QueryRandomMangaHandler::class,
Features\QueryRandomMangaListHandler::class,
Features\QueryRandomCharacterHandler::class, Features\QueryRandomCharacterHandler::class,
Features\QueryRandomCharacterListHandler::class,
Features\QueryRandomPersonHandler::class, Features\QueryRandomPersonHandler::class,
Features\QueryRandomPersonListHandler::class,
Features\QueryRandomUserHandler::class, Features\QueryRandomUserHandler::class,
Features\QueryRandomUserListHandler::class,
Features\QueryAnimeSchedulesHandler::class, Features\QueryAnimeSchedulesHandler::class,
Features\QueryCurrentAnimeSeasonHandler::class, Features\QueryCurrentAnimeSeasonHandler::class,
Features\QuerySpecificAnimeSeasonHandler::class, Features\QuerySpecificAnimeSeasonHandler::class,

View File

@ -556,6 +556,33 @@ $router->group(
$router->get('/users', [ $router->get('/users', [
'uses' => 'RandomController@users', 'uses' => 'RandomController@users',
]); ]);
$router->group(
[
'prefix' => '/list'
],
function() use ($router) {
$router->get('/anime', [
'uses' => 'RandomController@animeList',
]);
$router->get('/manga', [
'uses' => 'RandomController@mangaList',
]);
$router->get('/characters', [
'uses' => 'RandomController@charactersList',
]);
$router->get('/people', [
'uses' => 'RandomController@peopleList',
]);
$router->get('/users', [
'uses' => 'RandomController@usersList',
]);
}
);
} }
); );