add v4 Random (Anime, Manga, Character, Person) endpoint

This commit is contained in:
Irfan 2020-07-12 23:02:54 +05:00
parent 9f21f86b4f
commit 155aeb0a0f
2 changed files with 105 additions and 0 deletions

View File

@ -0,0 +1,82 @@
<?php
namespace App\Http\Controllers\V4DB;
use App\Anime;
use App\Character;
use App\Http\HttpHelper;
use App\Http\HttpResponse;
use App\Http\Resources\V4\AnimeCollection;
use App\Http\Resources\V4\AnimeResource;
use App\Http\Resources\V4\CharacterCollection;
use App\Http\Resources\V4\MangaCollection;
use App\Http\Resources\V4\PersonCollection;
use App\Manga;
use App\Person;
use Illuminate\Http\Request;
use MongoDB\BSON\UTCDateTime;
class RandomController extends Controller
{
public function anime(Request $request)
{
$sfw = $request->get('sfw');
$results = Anime::query();
if (!is_null($sfw)) {
$results = $results
->where('rating', '!=', 'Rx - Hentai');
}
$results = $results
->raw(fn($collection) => $collection->aggregate([ ['$sample' => ['size' => 1]] ]));
return new AnimeCollection(
$results
);
}
public function manga(Request $request)
{
$sfw = $request->get('sfw');
$results = Manga::query();
if (!is_null($sfw)) {
$results = $results
->where('type', '!=', 'Doujinshi');
}
$results = $results
->raw(fn($collection) => $collection->aggregate([ ['$sample' => ['size' => 1]] ]));
return new MangaCollection(
$results
);
}
public function characters(Request $request)
{
$results = Character::query()
->raw(fn($collection) => $collection->aggregate([ ['$sample' => ['size' => 1]] ]));
return new CharacterCollection(
$results
);
}
public function people(Request $request)
{
$results = Person::query()
->raw(fn($collection) => $collection->aggregate([ ['$sample' => ['size' => 1]] ]));
return new PersonCollection(
$results
);
}
}

View File

@ -463,4 +463,27 @@ $router->group(
'uses' => 'WatchController@popularPromos'
]);
}
);
$router->group(
[
'prefix' => 'random'
],
function() use ($router) {
$router->get('/anime', [
'uses' => 'RandomController@anime',
]);
$router->get('/manga', [
'uses' => 'RandomController@manga',
]);
$router->get('/character', [
'uses' => 'RandomController@characters',
]);
$router->get('/person', [
'uses' => 'RandomController@people',
]);
}
);