mirror of
https://github.com/AnimeThemes/animethemes-server.git
synced 2026-07-11 01:24:46 +02:00
feat(api): add playlists to global search endpoint (#555)
This commit is contained in:
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Api\Field\Wiki\Search;
|
||||
namespace App\Http\Api\Field\Search;
|
||||
|
||||
use App\Http\Api\Field\Field;
|
||||
use App\Http\Api\Schema\Schema;
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Api\Field\Wiki\Search;
|
||||
namespace App\Http\Api\Field\Search;
|
||||
|
||||
use App\Http\Api\Field\Field;
|
||||
use App\Http\Api\Schema\Schema;
|
||||
@@ -0,0 +1,25 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Api\Field\Search;
|
||||
|
||||
use App\Http\Api\Field\Field;
|
||||
use App\Http\Api\Schema\Schema;
|
||||
use App\Http\Resources\List\Collection\PlaylistCollection;
|
||||
|
||||
/**
|
||||
* Class SearchPlaylistField.
|
||||
*/
|
||||
class SearchPlaylistField extends Field
|
||||
{
|
||||
/**
|
||||
* Create a new field instance.
|
||||
*
|
||||
* @param Schema $schema
|
||||
*/
|
||||
public function __construct(Schema $schema)
|
||||
{
|
||||
parent::__construct($schema, PlaylistCollection::$wrap);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Api\Field\Wiki\Search;
|
||||
namespace App\Http\Api\Field\Search;
|
||||
|
||||
use App\Http\Api\Field\Field;
|
||||
use App\Http\Api\Schema\Schema;
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Api\Field\Wiki\Search;
|
||||
namespace App\Http\Api\Field\Search;
|
||||
|
||||
use App\Http\Api\Field\Field;
|
||||
use App\Http\Api\Schema\Schema;
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Api\Field\Wiki\Search;
|
||||
namespace App\Http\Api\Field\Search;
|
||||
|
||||
use App\Http\Api\Field\Field;
|
||||
use App\Http\Api\Schema\Schema;
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Api\Field\Wiki\Search;
|
||||
namespace App\Http\Api\Field\Search;
|
||||
|
||||
use App\Http\Api\Field\Field;
|
||||
use App\Http\Api\Schema\Schema;
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Api\Field\Wiki\Search;
|
||||
namespace App\Http\Api\Field\Search;
|
||||
|
||||
use App\Http\Api\Field\Field;
|
||||
use App\Http\Api\Schema\Schema;
|
||||
@@ -2,20 +2,27 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Api\Schema\Wiki;
|
||||
namespace App\Http\Api\Schema;
|
||||
|
||||
use App\Http\Api\Field\Field;
|
||||
use App\Http\Api\Field\Wiki\Search\SearchAnimeField;
|
||||
use App\Http\Api\Field\Wiki\Search\SearchArtistField;
|
||||
use App\Http\Api\Field\Wiki\Search\SearchSeriesField;
|
||||
use App\Http\Api\Field\Wiki\Search\SearchSongField;
|
||||
use App\Http\Api\Field\Wiki\Search\SearchStudioField;
|
||||
use App\Http\Api\Field\Wiki\Search\SearchThemeField;
|
||||
use App\Http\Api\Field\Wiki\Search\SearchVideoField;
|
||||
use App\Http\Api\Field\Search\SearchAnimeField;
|
||||
use App\Http\Api\Field\Search\SearchArtistField;
|
||||
use App\Http\Api\Field\Search\SearchPlaylistField;
|
||||
use App\Http\Api\Field\Search\SearchSeriesField;
|
||||
use App\Http\Api\Field\Search\SearchSongField;
|
||||
use App\Http\Api\Field\Search\SearchStudioField;
|
||||
use App\Http\Api\Field\Search\SearchThemeField;
|
||||
use App\Http\Api\Field\Search\SearchVideoField;
|
||||
use App\Http\Api\Include\AllowedInclude;
|
||||
use App\Http\Api\Schema\Schema;
|
||||
use App\Http\Api\Schema\List\PlaylistSchema;
|
||||
use App\Http\Api\Schema\Wiki\Anime\ThemeSchema;
|
||||
use App\Http\Resources\Wiki\Resource\SearchResource;
|
||||
use App\Http\Api\Schema\Wiki\AnimeSchema;
|
||||
use App\Http\Api\Schema\Wiki\ArtistSchema;
|
||||
use App\Http\Api\Schema\Wiki\SeriesSchema;
|
||||
use App\Http\Api\Schema\Wiki\SongSchema;
|
||||
use App\Http\Api\Schema\Wiki\StudioSchema;
|
||||
use App\Http\Api\Schema\Wiki\VideoSchema;
|
||||
use App\Http\Resources\SearchResource;
|
||||
|
||||
/**
|
||||
* Class SearchSchema.
|
||||
@@ -43,6 +50,7 @@ class SearchSchema extends Schema
|
||||
new AllowedInclude(new AnimeSchema(), ''),
|
||||
new AllowedInclude(new ThemeSchema(), ''),
|
||||
new AllowedInclude(new ArtistSchema(), ''),
|
||||
new AllowedInclude(new PlaylistSchema(), ''),
|
||||
new AllowedInclude(new SeriesSchema(), ''),
|
||||
new AllowedInclude(new SongSchema(), ''),
|
||||
new AllowedInclude(new StudioSchema(), ''),
|
||||
@@ -63,6 +71,7 @@ class SearchSchema extends Schema
|
||||
new SearchAnimeField($this),
|
||||
new SearchThemeField($this),
|
||||
new SearchArtistField($this),
|
||||
new SearchPlaylistField($this),
|
||||
new SearchSeriesField($this),
|
||||
new SearchSongField($this),
|
||||
new SearchStudioField($this),
|
||||
+4
-4
@@ -2,15 +2,15 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Controllers\Api\Wiki;
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Contracts\Http\Api\InteractsWithSchema;
|
||||
use App\Http\Api\Query\Query;
|
||||
use App\Http\Api\Schema\Schema;
|
||||
use App\Http\Api\Schema\Wiki\SearchSchema;
|
||||
use App\Http\Api\Schema\SearchSchema;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Http\Requests\Api\Wiki\SearchRequest;
|
||||
use App\Http\Resources\Wiki\Resource\SearchResource;
|
||||
use App\Http\Requests\Api\SearchRequest;
|
||||
use App\Http\Resources\SearchResource;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
/**
|
||||
+1
-2
@@ -2,14 +2,13 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Requests\Api\Wiki;
|
||||
namespace App\Http\Requests\Api;
|
||||
|
||||
use App\Http\Api\Parser\FieldParser;
|
||||
use App\Http\Api\Parser\FilterParser;
|
||||
use App\Http\Api\Parser\IncludeParser;
|
||||
use App\Http\Api\Parser\SearchParser;
|
||||
use App\Http\Api\Parser\SortParser;
|
||||
use App\Http\Requests\Api\ReadRequest;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Str;
|
||||
use Illuminate\Validation\Validator;
|
||||
+8
-1
@@ -2,11 +2,12 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Resources\Wiki\Resource;
|
||||
namespace App\Http\Resources;
|
||||
|
||||
use App\Actions\Http\Api\IndexAction;
|
||||
use App\Enums\Http\Api\Paging\PaginationStrategy;
|
||||
use App\Http\Api\Query\Query;
|
||||
use App\Http\Api\Schema\List\PlaylistSchema;
|
||||
use App\Http\Api\Schema\Wiki\Anime\ThemeSchema;
|
||||
use App\Http\Api\Schema\Wiki\AnimeSchema;
|
||||
use App\Http\Api\Schema\Wiki\ArtistSchema;
|
||||
@@ -14,6 +15,7 @@ use App\Http\Api\Schema\Wiki\SeriesSchema;
|
||||
use App\Http\Api\Schema\Wiki\SongSchema;
|
||||
use App\Http\Api\Schema\Wiki\StudioSchema;
|
||||
use App\Http\Api\Schema\Wiki\VideoSchema;
|
||||
use App\Http\Resources\List\Collection\PlaylistCollection;
|
||||
use App\Http\Resources\Wiki\Anime\Collection\ThemeCollection;
|
||||
use App\Http\Resources\Wiki\Collection\AnimeCollection;
|
||||
use App\Http\Resources\Wiki\Collection\ArtistCollection;
|
||||
@@ -83,6 +85,11 @@ class SearchResource extends JsonResource
|
||||
$result[ArtistCollection::$wrap] = new ArtistCollection($artists, $this->query);
|
||||
}
|
||||
|
||||
if ($criteria->isAllowedField(PlaylistCollection::$wrap)) {
|
||||
$series = $action->search($this->query, new PlaylistSchema(), PaginationStrategy::LIMIT());
|
||||
$result[PlaylistCollection::$wrap] = new PlaylistCollection($series, $this->query);
|
||||
}
|
||||
|
||||
if ($criteria->isAllowedField(SeriesCollection::$wrap)) {
|
||||
$series = $action->search($this->query, new SeriesSchema(), PaginationStrategy::LIMIT());
|
||||
$result[SeriesCollection::$wrap] = new SeriesCollection($series, $this->query);
|
||||
+1
-1
@@ -28,6 +28,7 @@ use App\Http\Controllers\Api\Pivot\Wiki\ArtistResourceController;
|
||||
use App\Http\Controllers\Api\Pivot\Wiki\ArtistSongController;
|
||||
use App\Http\Controllers\Api\Pivot\Wiki\StudioImageController;
|
||||
use App\Http\Controllers\Api\Pivot\Wiki\StudioResourceController;
|
||||
use App\Http\Controllers\Api\SearchController;
|
||||
use App\Http\Controllers\Api\Wiki\Anime\SynonymController;
|
||||
use App\Http\Controllers\Api\Wiki\Anime\Theme\EntryController;
|
||||
use App\Http\Controllers\Api\Wiki\Anime\ThemeController;
|
||||
@@ -37,7 +38,6 @@ use App\Http\Controllers\Api\Wiki\ArtistController;
|
||||
use App\Http\Controllers\Api\Wiki\AudioController;
|
||||
use App\Http\Controllers\Api\Wiki\ExternalResourceController;
|
||||
use App\Http\Controllers\Api\Wiki\ImageController;
|
||||
use App\Http\Controllers\Api\Wiki\SearchController;
|
||||
use App\Http\Controllers\Api\Wiki\SeriesController;
|
||||
use App\Http\Controllers\Api\Wiki\SongController;
|
||||
use App\Http\Controllers\Api\Wiki\StudioController;
|
||||
|
||||
@@ -2,10 +2,12 @@
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Wiki;
|
||||
namespace Http\Api;
|
||||
|
||||
use App\Http\Api\Parser\FieldParser;
|
||||
use App\Http\Api\Parser\SearchParser;
|
||||
use App\Http\Resources\List\Collection\PlaylistCollection;
|
||||
use App\Http\Resources\SearchResource;
|
||||
use App\Http\Resources\Wiki\Anime\Collection\ThemeCollection;
|
||||
use App\Http\Resources\Wiki\Collection\AnimeCollection;
|
||||
use App\Http\Resources\Wiki\Collection\ArtistCollection;
|
||||
@@ -13,7 +15,6 @@ use App\Http\Resources\Wiki\Collection\SeriesCollection;
|
||||
use App\Http\Resources\Wiki\Collection\SongCollection;
|
||||
use App\Http\Resources\Wiki\Collection\StudioCollection;
|
||||
use App\Http\Resources\Wiki\Collection\VideoCollection;
|
||||
use App\Http\Resources\Wiki\Resource\SearchResource;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
@@ -63,6 +64,7 @@ class SearchTest extends TestCase
|
||||
AnimeCollection::$wrap => [],
|
||||
ThemeCollection::$wrap => [],
|
||||
ArtistCollection::$wrap => [],
|
||||
PlaylistCollection::$wrap => [],
|
||||
SeriesCollection::$wrap => [],
|
||||
SongCollection::$wrap => [],
|
||||
StudioCollection::$wrap => [],
|
||||
@@ -87,6 +89,7 @@ class SearchTest extends TestCase
|
||||
AnimeCollection::$wrap,
|
||||
ThemeCollection::$wrap,
|
||||
ArtistCollection::$wrap,
|
||||
PlaylistCollection::$wrap,
|
||||
SeriesCollection::$wrap,
|
||||
SongCollection::$wrap,
|
||||
StudioCollection::$wrap,
|
||||
Reference in New Issue
Block a user