From 5c82fe14ca822e28add4bb22416adb360f6b2d81 Mon Sep 17 00:00:00 2001 From: fipwmaqzufheoxq92ebc <29818044+fipwmaqzufheoxq92ebc@users.noreply.github.com> Date: Tue, 1 Sep 2020 12:28:03 +0200 Subject: [PATCH] Use FilteredApiResponse for Generic-Entity-Search --- controllers/GenericEntityApiController.php | 8 +++++--- routes.php | 2 +- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/controllers/GenericEntityApiController.php b/controllers/GenericEntityApiController.php index 97be51fc..f3b72afa 100644 --- a/controllers/GenericEntityApiController.php +++ b/controllers/GenericEntityApiController.php @@ -3,6 +3,7 @@ namespace Grocy\Controllers; use Grocy\Controllers\Users\User; +use Slim\Exception\HttpBadRequestException; class GenericEntityApiController extends BaseApiController { @@ -178,12 +179,13 @@ class GenericEntityApiController extends BaseApiController { try { - return $this->ApiResponse($response, $this->getDatabase()->{$args['entity']} - ()->where('name LIKE ?', '%' . $args['searchString'] . '%')); + return $this->FilteredApiResponse($response, $this->getDatabase()->{$args['entity']} + ()->where('name LIKE ?', '%' . $args['searchString'] . '%'), $request->getQueryParams()); } catch (\PDOException $ex) { - return $this->GenericErrorResponse($response, 'The given entity has no field "name"'); + throw new HttpBadRequestException($request, $ex->getMessage(), $ex); + //return $this->GenericErrorResponse($response, 'The given entity has no field "name"', $ex); } } diff --git a/routes.php b/routes.php index 63b01aa9..4be16bf8 100644 --- a/routes.php +++ b/routes.php @@ -153,7 +153,7 @@ $app->group('/api', function(RouteCollectorProxy $group) // Generic entity interaction $group->get('/objects/{entity}', '\Grocy\Controllers\GenericEntityApiController:GetObjects'); $group->get('/objects/{entity}/{objectId}', '\Grocy\Controllers\GenericEntityApiController:GetObject'); - $group->get('/objects/{entity}/search/{searchString}', '\Grocy\Controllers\GenericEntityApiController:SearchObjects'); + $group->get('/objects/{entity}/search/{searchString:.*}', '\Grocy\Controllers\GenericEntityApiController:SearchObjects'); $group->post('/objects/{entity}', '\Grocy\Controllers\GenericEntityApiController:AddObject'); $group->put('/objects/{entity}/{objectId}', '\Grocy\Controllers\GenericEntityApiController:EditObject'); $group->delete('/objects/{entity}/{objectId}', '\Grocy\Controllers\GenericEntityApiController:DeleteObject');