Compare commits

...

2 Commits

Author SHA1 Message Date
b1ek b363bf9fc2
fix: a bunch of dumb stupid crap 2024-08-30 17:29:18 +10:00
b1ek af9762945b
feat: add filter type "not" 2024-08-30 17:24:23 +10:00
4 changed files with 18 additions and 11 deletions

View File

@ -6,5 +6,5 @@ class Filter
{ {
public FilterTypeEnum $type; public FilterTypeEnum $type;
public string $column; public string $column;
public string $filter; public mixed $filter;
} }

View File

@ -5,5 +5,6 @@ namespace App\Facade\Filters;
enum FilterTypeEnum: string enum FilterTypeEnum: string
{ {
case Is = 'is'; case Is = 'is';
case Not = 'not';
case Like = 'like'; case Like = 'like';
} }

View File

@ -9,17 +9,20 @@ use JsonMapper;
class Filters class Filters
{ {
public const FILTERS_VALIDATION = []; public static function rules()
// 'filters.*.column' => [ 'required', 'string' ], {
// 'filters.*.type' => [ 'required', Rule::enum(FilterTypeEnum::class) ], return [
// 'filters.*.filter' => [ 'required', 'string' ], 'filters.*.column' => [ 'required', 'string' ],
'filters.*.type' => [ 'required', Rule::enum(FilterTypeEnum::class) ],
'filters.*.filter' => [ 'required', 'nullable', 'string' ],
// 'orders.*.by' => [ 'required', 'string' ], 'orders.*.by' => [ 'required', 'string' ],
// 'orders.*.sort' => [ 'required', Rule::enum(OrderTypeEnum::class) ], 'orders.*.sort' => [ 'required', Rule::enum(OrderTypeEnum::class) ],
// 'pagination.size' => 'number', 'pagination.size' => 'number',
// 'pagination.page' => 'number', 'pagination.page' => 'number',
// ]; ];
}
/** /**
* @var Filter[] * @var Filter[]
@ -54,6 +57,9 @@ class Filters
case FilterTypeEnum::Is: case FilterTypeEnum::Is:
$builder->where($filter->column, $filter->filter); $builder->where($filter->column, $filter->filter);
break; break;
case FilterTypeEnum::Not:
$builder->whereNot($filter->column, $filter->filter);
break;
case FilterTypeEnum::Like: case FilterTypeEnum::Like:
$builder->whereLike($filter->column, $filter->filter); $builder->whereLike($filter->column, $filter->filter);
break; break;

View File

@ -7,6 +7,6 @@ class AuthorizedFilterListRequest extends AuthorizedRequest
{ {
public function rules() public function rules()
{ {
return Filters::FILTERS_VALIDATION; return Filters::rules();
} }
} }