From eca1756e76295980c1bf3d5a535183d0741bbdab Mon Sep 17 00:00:00 2001 From: Amirmahdi Nourkazemi Date: Fri, 12 Jun 2026 20:54:03 +0330 Subject: [PATCH] feat: add media get route newest --- app/Http/Controllers/MediaController.php | 28 +++++++++++++++++++++--- routes/api.php | 1 + 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php index 7042d04..930f3db 100644 --- a/app/Http/Controllers/MediaController.php +++ b/app/Http/Controllers/MediaController.php @@ -201,9 +201,31 @@ public function index(Request $request) }); } - return response()->json( - $query->orderBy('created_at', 'desc')->get() - ); + $query->orderBy('created_at', 'desc'); + + // Optional cap: ?count=10 returns only the first 10 items. + if ($request->filled('count')) { + $query->limit(max(1, (int) $request->input('count'))); + } + + return response()->json($query->get()); +} + +// NEWEST media, paginated (?per_page=, ?page=). Same visibility scope as index. +public function newest(Request $request) +{ + $perPage = (int) $request->input('per_page', 20); + $perPage = max(1, min($perPage, 100)); + + $media = Media::with(['image', 'detailImage', 'categories', 'subCategories', 'myNote', 'tags']) + ->where(function ($q) { + $q->where('visibility', 'public') + ->orWhere('user_id', auth()->id()); + }) + ->orderBy('created_at', 'desc') + ->paginate($perPage); + + return response()->json($media); } public function submitFeedback(Request $request, $mediaId) diff --git a/routes/api.php b/routes/api.php index 72d3904..5205588 100644 --- a/routes/api.php +++ b/routes/api.php @@ -223,6 +223,7 @@ ///media Route::get('/media/filters', [MediaController::class, 'filters']); Route::get('/media/popular', [MediaController::class, 'popular']); + Route::get('/media/newest', [MediaController::class, 'newest']); Route::get('/media/recently-played', [MediaController::class, 'recentlyPlayed']); Route::post('/media', [MediaController::class, 'store']); Route::get('/media', [MediaController::class, 'index']);