From e273c7cbc5c65e4a537a3f8bc80c3183796dd523 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Tue, 25 Mar 2025 15:21:18 -0500 Subject: [PATCH 1/2] Refactor asset retrieval to support pagination. Introduced offset and limit handling for API asset queries to enable proper pagination. Adjusted the total count logic to maintain consistency in responses and ensure accurate transformation of assets. --- app/Http/Controllers/Api/AssetsController.php | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 87ecdcb60..8ae9bdbb8 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -498,8 +498,14 @@ class AssetsController extends Controller $assets = $assets->withTrashed(); } - if (($assets = $assets->get()) && ($assets->count()) > 0) { - return (new AssetsTransformer)->transformAssets($assets, $assets->count()); + $offset = ($request->input('offset') > $assets->count()) ? $assets->count() : app('api_offset_value'); + $limit = app('api_limit_value'); + + $total = $assets->count(); + $assets = $assets->skip($offset)->take($limit)->get(); + + if (($assets) && ($assets->count()) > 0) { + return (new AssetsTransformer)->transformAssets($assets, $total); } // If there are 0 results, return the "no such asset" response From bfd827e5296e983ef118f83d5111b59fe671c148 Mon Sep 17 00:00:00 2001 From: spencerrlongg Date: Mon, 31 Mar 2025 12:28:03 -0500 Subject: [PATCH 2/2] added more eager loading --- app/Http/Controllers/Api/AssetsController.php | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/Http/Controllers/Api/AssetsController.php b/app/Http/Controllers/Api/AssetsController.php index 8ae9bdbb8..d780bd8bd 100644 --- a/app/Http/Controllers/Api/AssetsController.php +++ b/app/Http/Controllers/Api/AssetsController.php @@ -491,7 +491,18 @@ class AssetsController extends Controller public function showBySerial(Request $request, $serial): JsonResponse | array { $this->authorize('index', Asset::class); - $assets = Asset::where('serial', $serial)->with('assetstatus')->with('assignedTo'); + $assets = Asset::where('serial', $serial)->with([ + 'assetstatus', + 'assignedTo', + 'company', + 'defaultLoc', + 'location', + 'model.category', + 'model.depreciation', + 'model.fieldset', + 'model.manufacturer', + 'supplier', + ]); // Check if they've passed ?deleted=true if ($request->input('deleted', 'false') == 'true') {