Skip to content

Commit

Permalink
Feat:make override method for reponse filter
Browse files Browse the repository at this point in the history
  • Loading branch information
mehdi-fathi committed Feb 1, 2023
1 parent 6ea4d2b commit 17f4cde
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 31 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -759,20 +759,20 @@ That is a practical method when you want to set user_id or convert date or remov

### Response Filter

Response Filter is a magic method for just changing response after handling by Eloquent Filter. The method called
`ResponseFilter` You should implement the method `ResponseFilter` in your Model. For example
Response Filter is an overriding method for changing response right after handle by Eloquent Filter. The method called
`getResponseFilter` and You could implement the method `getResponseFilter` in your Model. e.g:

```php

class User extends Model
{
use Filterable;
public function ResponseFilter($response)
public function getResponseFilter($response)
{
$data['data'] = $response;
return $data;
}
}
```

- If you have any new idea about the Eloquent Filter, I will be glad to hear that.
- If you have any interesting idea about the Eloquent Filter, I will be glad to hear that.
8 changes: 3 additions & 5 deletions src/QueryFilter/Core/FilterBuilder/QueryFilterBuilder.php
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,7 @@ public function apply($builder, array $request = null, array $ignore_request = n

$this->resolveDetections();

$this->responseFilter->responseFilterHandler($this->queryBuilderWrapper, $this->responseFilter->getResponse());

return $this->responseFilter->getResponse();
return $this->queryBuilderWrapper->getModel()->getResponseFilter($this->responseFilter->getResponse());
}

/**
Expand All @@ -105,9 +103,9 @@ private function resolveDetections()
});

/** @see ResolverDetections::getResolverOut() */
$response = app('ResolverDetections')->getResolverOut();
$responseResolver = app('ResolverDetections')->getResolverOut();

$this->responseFilter->setResponse($response);
$this->responseFilter->setResponse($responseResolver);
}

/**
Expand Down
15 changes: 0 additions & 15 deletions src/QueryFilter/Core/FilterBuilder/ResponseFilter.php
Original file line number Diff line number Diff line change
Expand Up @@ -27,19 +27,4 @@ public function setResponse($response): void
{
$this->response = $response;
}

/**
* @param $queryBuilderWrapper
* @param $out
*
* @return mixed
*/
public function responseFilterHandler($queryBuilderWrapper, $out)
{
if (method_exists($queryBuilderWrapper->getModel(), 'ResponseFilter')) {
$out = $queryBuilderWrapper->responseFilter($out);
}
$this->setResponse($out);

}
}
8 changes: 8 additions & 0 deletions src/QueryFilter/ModelFilters/Filterable.php
Original file line number Diff line number Diff line change
Expand Up @@ -152,4 +152,12 @@ public function getLoadInjectedDetections(): bool
{
return $this->load_injected_detections;
}

/**
* @return null
*/
public function getResponseFilter($response)
{
return $response;
}
}
16 changes: 9 additions & 7 deletions tests/Models/Stat.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
class Stat extends Model
{
use Filterable;

/**
* @var array
*/
Expand All @@ -16,17 +17,18 @@ class Stat extends Model
'national_code',
];

public function ResponseFilter($out)
{
$data['data'] = $out;

return $data;
}

/**
* @var array
*/
private $aliasListFilter = [
'national_code' => 'code',
];

public function getResponseFilter($out)
{
$data['data'] = $out;

return $data;
}

}

0 comments on commit 17f4cde

Please sign in to comment.