From ffdcfe670a9bc272747f7fc201b14a556cf67e9c Mon Sep 17 00:00:00 2001 From: AnabolicsAnonymous Date: Thu, 28 Aug 2025 20:22:22 -0500 Subject: [PATCH] update: use torrentRequestResource for pagination --- .../API/TorrentRequestController.php | 19 +------- book/src/torrent_request_api.md | 44 ++++++++++++++----- 2 files changed, 35 insertions(+), 28 deletions(-) diff --git a/app/Http/Controllers/API/TorrentRequestController.php b/app/Http/Controllers/API/TorrentRequestController.php index 7ba4cd5e7..a392a60cd 100644 --- a/app/Http/Controllers/API/TorrentRequestController.php +++ b/app/Http/Controllers/API/TorrentRequestController.php @@ -56,19 +56,6 @@ class RequestController extends Controller ? $query->whereNotNull('claim') : $query->whereNull('claim')); - $sortField = match ($request->input('sortField', 'created_at')) { - 'name', 'created_at', 'updated_at' => $request->input('sortField', 'created_at'), - 'bounty' => 'bounty', - default => 'created_at' - }; - - $sortDirection = match (strtolower($request->input('sortDirection', 'desc'))) { - 'asc' => 'asc', - default => 'desc' - }; - - $query->orderBy($sortField, $sortDirection); - $perPage = min($request->integer('perPage', 25), 100); $page = max($request->integer('page', 1), 1); $requests = $query->paginate( @@ -76,11 +63,7 @@ class RequestController extends Controller page: $page ); - return response()->json([ - 'results' => TorrentRequestResource::collection($requests), - 'total_pages' => $requests->lastPage(), - 'total_results' => $requests->total(), - ]); + return TorrentRequestResource::collection($requests)->response(); } /** diff --git a/book/src/torrent_request_api.md b/book/src/torrent_request_api.md index f177bd7af..2870fbcd9 100644 --- a/book/src/torrent_request_api.md +++ b/book/src/torrent_request_api.md @@ -22,8 +22,6 @@ Filter, sort, and paginate torrent requests. | `mal` | integer | Filter by MAL ID | - | | `filled` | boolean | Filter by filled status | - | | `claimed` | boolean | Filter by claimed status | - | -| `sortField` | string | Field to sort by (name, created_at, updated_at, bounty) | created_at | -| `sortDirection` | string | Sort direction (asc, desc) | desc | | `page` | integer | Page number | 1 | | `perPage` | integer | Items per page (max: 100) | 25 | @@ -39,7 +37,7 @@ curl -X GET "https://unit3d.site/api/requests/filter?tmdb=2508" \ ```json { - "results": [ + "data": [ { "id": 1, "name": "Mind Your Language S04", @@ -58,14 +56,42 @@ curl -X GET "https://unit3d.site/api/requests/filter?tmdb=2508" \ "bounty": 125000, "status": "unfilled", "claimed": false, - "claimed_by": null, - "filled_by": null, "created": "2025-08-01T11:02:22+00:00", "updated_at": "2025-08-21T12:40:27+00:00" } ], - "total_pages": 1, - "total_results": 1 + "links": { + "first": "https://unit3d.site/api/requests/filter?page=1", + "last": "https://unit3d.site/api/requests/filter?page=1", + "prev": null, + "next": null + }, + "meta": { + "current_page": 1, + "from": 1, + "last_page": 1, + "links": [ + { + "url": null, + "label": "« Previous", + "active": false + }, + { + "url": "https://unit3d.site/api/requests/filter?page=1", + "label": "1", + "active": true + }, + { + "url": null, + "label": "Next »", + "active": false + } + ], + "path": "https://unit3d.site/api/requests/filter", + "per_page": 25, + "to": 1, + "total": 1 + } } ``` @@ -93,7 +119,7 @@ curl -X GET "https://unit3d.site/api/requests/1" \ ```json { - "results": { + "data": { "id": 1, "name": "Mind Your Language S04", "description": "Example description.", @@ -111,8 +137,6 @@ curl -X GET "https://unit3d.site/api/requests/1" \ "bounty": 125000, "status": "unfilled", "claimed": false, - "claimed_by": null, - "filled_by": null, "created": "2025-08-01T11:02:22+00:00", "updated_at": "2025-08-21T12:40:27+00:00" }