From 883d60b9c73002c474294d9a024f8a2e1ab1f575 Mon Sep 17 00:00:00 2001 From: Lupacescu Eduard Date: Thu, 25 Nov 2021 14:50:10 +0200 Subject: [PATCH] fix: Fixing query matches. (#439) --- config/config.php | 7 +++++++ src/Filters/MatchesCollection.php | 11 ++++++++--- src/Http/Requests/ActionRequest.php | 2 +- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/config/config.php b/config/config.php index f64be64f..51c73f51 100644 --- a/config/config.php +++ b/config/config.php @@ -116,6 +116,13 @@ 'related' => \Binaryk\LaravelRestify\Repositories\Casts\RelatedCast::class, ], + 'search' => [ + /* + | Allow Restify to check the post payload in order to receive matchable filters. + */ + 'matchable_using_post_payload' => true, + ], + /* |-------------------------------------------------------------------------- | Restify Logs diff --git a/src/Filters/MatchesCollection.php b/src/Filters/MatchesCollection.php index 7cbbfbf4..ae081b0f 100644 --- a/src/Filters/MatchesCollection.php +++ b/src/Filters/MatchesCollection.php @@ -50,8 +50,8 @@ public function inQuery(RestifyRequest $request): self { return $this->filter(function (MatchFilter $filter) use ($request) { $possibleKeys = collect([ - $filter->getColumn(), - "-{$filter->getColumn()}", + $filter->column(), + "-{$filter->column()}", ]); if ($filters = collect($request->input('filter', []))) { @@ -60,7 +60,12 @@ public function inQuery(RestifyRequest $request): self } } - return $request->has("-{$filter->getColumn()}") || $request->has($filter->getColumn()); + if (! config('restify.search.matchable_using_post_payload')) { + return (bool) ($request->query("-{$filter->column()}") || $request->query($filter->column())); + } + + + return $request->has("-{$filter->column()}") || $request->has($filter->column()); }); } diff --git a/src/Http/Requests/ActionRequest.php b/src/Http/Requests/ActionRequest.php index 7daf4d8e..a4707f35 100644 --- a/src/Http/Requests/ActionRequest.php +++ b/src/Http/Requests/ActionRequest.php @@ -45,7 +45,7 @@ public function builder(Action $action, int $size): Builder ->latest($this->model()->getKeyName()); } - public function collectRepositories(Action $action, $count, Closure $callback) + public function collectRepositories(Action $action, $count, Closure $callback): array { $output = [];