add support for filter expression

This commit is contained in:
Andrei V. Goryunov 2022-09-13 16:31:08 +03:00
parent 07e80965a4
commit 5f7c0d2da5
4 changed files with 20 additions and 0 deletions

View File

@ -50,6 +50,13 @@ interface AdapterInterface
*/
public function filterByRelationship($query, Relationship $relationship, Closure $scope): void;
/**
* Manipulate the query to only include resources appropriate to given filter expression.
*
* @param string $expression The filter expression
*/
public function filterByExpression($query, string $expression): void;
/**
* Manipulate the query to sort by the given attribute in the given direction.
*/

View File

@ -61,6 +61,10 @@ class EloquentAdapter implements AdapterInterface
$query->whereHas($this->getRelationshipProperty($relationship), $scope);
}
public function filterByExpression($query, string $expression): void
{
}
public function sortByAttribute($query, Attribute $attribute, string $direction): void
{
$query->orderBy($this->getAttributeProperty($attribute), $direction);

View File

@ -27,6 +27,10 @@ class NullAdapter implements AdapterInterface
{
}
public function filterByExpression($query, string $expression): void
{
}
public function sortByAttribute($query, Attribute $attribute, string $direction): void
{
}

View File

@ -122,6 +122,11 @@ final class ResourceType
continue;
}
if (is_int($name)) {
$this->adapter->filterByExpression($query, $value);
continue;
}
if (
isset($customFilters[$name])
&& evaluate($customFilters[$name]->getVisible(), [$context])