Skip to content

Commit a3f8941

Browse files
authored
Merge pull request #4 from hschimpf/1.x-dev
Release the ability to customize the query with callbacks
2 parents 3c0abbc + 225f2cd commit a3f8941

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/ResourceFilters.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,11 @@ final public function __construct(
5858
protected Request $request,
5959
) {}
6060

61+
protected function before(Builder $query): void {}
62+
6163
final public function handle(Builder $query, Closure $next): Builder | Collection | LengthAwarePaginator {
64+
$this->before($query);
65+
6266
foreach ($this->allowed_columns as $column => $operators) {
6367
// ignore filter if not specified in params
6468
if (is_null($param = $this->request->query($column))) {
@@ -101,9 +105,13 @@ final public function handle(Builder $query, Closure $next): Builder | Collectio
101105
}
102106
}
103107

108+
$this->after($query);
109+
104110
return $next($query);
105111
}
106112

113+
protected function after(Builder $query): void {}
114+
107115
private function addQueryFilter(Builder $query, string $column, string $operator, $value): void {
108116
// check if a method with the param name exists
109117
if (method_exists($this, $method = lcfirst((string) str($column)->studly()))) {

src/ResourceOrders.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,11 @@ final public function __construct(
3030
protected Request $request,
3131
) {}
3232

33+
protected function before(Builder $query): void {}
34+
3335
final public function handle(Builder $query, Closure $next): Builder | Collection | LengthAwarePaginator {
36+
$this->before($query);
37+
3438
// check if query param was not defined
3539
if (null === $order = $this->request->query('order')) {
3640
// add default sorting fields
@@ -56,9 +60,13 @@ final public function handle(Builder $query, Closure $next): Builder | Collectio
5660
$this->addQueryOrder($query, $value[$direction], $direction);
5761
}
5862

63+
$this->after($query);
64+
5965
return $next($query);
6066
}
6167

68+
protected function after(Builder $query): void {}
69+
6270
private function clean(array &$order): void {
6371
sort($order);
6472

0 commit comments

Comments
 (0)