init
This commit is contained in:
36
app/Filters/ApiFilter.php
Normal file
36
app/Filters/ApiFilter.php
Normal file
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filters;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
|
||||
class ApiFilter {
|
||||
protected $safeParms = [];
|
||||
|
||||
protected $columnMap = [];
|
||||
|
||||
protected $operatorMap = [];
|
||||
|
||||
public function transform(Request $request) {
|
||||
$eloQuery = [];
|
||||
|
||||
foreach ($this->safeParms as $parm => $operators) {
|
||||
$query = $request->query($parm);
|
||||
|
||||
if (!isset($query)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$column = $this->columnMap[$parm] ?? $parm;
|
||||
|
||||
foreach ($operators as $operator) {
|
||||
if (isset($query[$operator])) {
|
||||
$eloQuery[] = [$column, $this->operatorMap[$operator], $query[$operator]];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $eloQuery;
|
||||
}
|
||||
|
||||
}
|
||||
26
app/Filters/CityFilter.php
Normal file
26
app/Filters/CityFilter.php
Normal file
@@ -0,0 +1,26 @@
|
||||
<?php
|
||||
|
||||
namespace App\Filters;
|
||||
|
||||
use App\Filters\ApiFilter;
|
||||
|
||||
class CityFilter extends ApiFilter {
|
||||
protected $safeParms = [
|
||||
'locationName' => ['eq'],
|
||||
'locationCountry' => ['eq'],
|
||||
'id' => ['eq']
|
||||
];
|
||||
|
||||
protected $columnMap = [
|
||||
'locationName' => 'location_name',
|
||||
'locationCountry' => 'location_country'
|
||||
];
|
||||
|
||||
protected $operatorMap = [
|
||||
'eq' => '=',
|
||||
'lt' => '<',
|
||||
'lte' => '<=',
|
||||
'gt' => '>',
|
||||
'gte' => '>=',
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user