mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-14 20:40:49 +08:00
API bookmark
This commit is contained in:
@@ -9,6 +9,7 @@ use App\Exceptions\InsufficientPermissionException;
|
||||
use App\Exceptions\NexusException;
|
||||
use App\Http\Resources\TorrentResource;
|
||||
use App\Models\AudioCodec;
|
||||
use App\Models\Bookmark;
|
||||
use App\Models\Category;
|
||||
use App\Models\Claim;
|
||||
use App\Models\Codec;
|
||||
@@ -36,6 +37,7 @@ use Carbon\Carbon;
|
||||
use Elasticsearch\Endpoints\Search;
|
||||
use Illuminate\Contracts\Auth\Authenticatable;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Illuminate\Database\Query\JoinClause;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Collection;
|
||||
@@ -96,7 +98,8 @@ class TorrentRepository extends BaseRepository
|
||||
];
|
||||
$allowFilters = [
|
||||
'title', 'category', 'source', 'medium', 'codec', 'audiocodec', 'standard', 'processing', 'team',
|
||||
'owner', 'visible', 'added', 'size', 'sp_state', 'leechers', 'seeders', 'times_completed'
|
||||
'owner', 'visible', 'added', 'size', 'sp_state', 'leechers', 'seeders', 'times_completed',
|
||||
'bookmark'
|
||||
];
|
||||
$allowSorts = ['id', 'comments', 'size', 'seeders', 'leechers', 'times_completed'];
|
||||
$apiQueryBuilder = ApiQueryBuilder::for(TorrentResource::NAME, $query, $request)
|
||||
@@ -114,6 +117,18 @@ class TorrentRepository extends BaseRepository
|
||||
});
|
||||
}
|
||||
})
|
||||
->registerCustomFilter('bookmark', function (Builder $query, Request $request) use ($user) {
|
||||
$filterBookmark = $request->input(ApiQueryBuilder::PARAM_NAME_FILTER.".bookmark");
|
||||
if ($filterBookmark === Bookmark::FILTER_INCLUDE) {
|
||||
$query->whereHas("bookmarks", function (Builder $query) use ($user) {
|
||||
$query->where("userid", $user->id);
|
||||
});
|
||||
} elseif ($filterBookmark === Bookmark::FILTER_EXCLUDE) {
|
||||
$query->whereDoesntHave("bookmarks", function (Builder $query) use ($user) {
|
||||
$query->where("userid", $user->id);
|
||||
});
|
||||
}
|
||||
})
|
||||
;
|
||||
$query = $apiQueryBuilder->build();
|
||||
if (!$apiQueryBuilder->hasSort()) {
|
||||
|
||||
Reference in New Issue
Block a user