feat: add new api for search media
This commit is contained in:
@@ -326,33 +326,33 @@ public function filters(Request $request)
|
||||
->groupBy('duration_range')
|
||||
->get();
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| 3️⃣ The media matching the chosen filters (so one call returns both the
|
||||
| filter options and the result list the user asked for).
|
||||
|--------------------------------------------------------------------------
|
||||
*/
|
||||
return response()->json([
|
||||
'categories' => $categories,
|
||||
'subcategories' => $subcategories,
|
||||
'durations' => $durations,
|
||||
]);
|
||||
}
|
||||
|
||||
$mediaQuery = Media::with(['image', 'detailImage', 'categories', 'subCategories', 'myNote', 'tags'])
|
||||
// SEARCH/filter results — paginated. Accepts the same filters as /media
|
||||
// (categories, subcategories, durations, tags, search) plus ?page= & ?per_page=.
|
||||
public function search(Request $request)
|
||||
{
|
||||
$query = Media::with(['image', 'detailImage', 'categories', 'subCategories', 'myNote', 'tags'])
|
||||
->where(function ($q) {
|
||||
$q->where('visibility', 'public')
|
||||
->orWhere('user_id', auth()->id());
|
||||
});
|
||||
|
||||
$this->applyMediaFilters($mediaQuery, $request);
|
||||
$this->applyMediaFilters($query, $request);
|
||||
|
||||
$mediaQuery->orderBy('created_at', 'desc');
|
||||
$perPage = (int) $request->input('per_page', 20);
|
||||
$perPage = max(1, min($perPage, 100));
|
||||
|
||||
if ($request->filled('count')) {
|
||||
$mediaQuery->limit(max(1, (int) $request->input('count')));
|
||||
}
|
||||
$results = $query->orderBy('created_at', 'desc')
|
||||
->paginate($perPage)
|
||||
->withQueryString();
|
||||
|
||||
return response()->json([
|
||||
'categories' => $categories,
|
||||
'subcategories' => $subcategories,
|
||||
'durations' => $durations,
|
||||
'media' => $mediaQuery->get(),
|
||||
]);
|
||||
return response()->json($results);
|
||||
}
|
||||
|
||||
public function show($id)
|
||||
|
||||
Reference in New Issue
Block a user