1
0
mirror of https://github.com/flarum/core.git synced 2025-10-14 00:15:51 +02:00

Query Namespace (#2645)

Move shared classes in search and filter namespaces to a new query namespace
This commit is contained in:
Alexander Skvortsov
2021-03-02 09:57:40 -05:00
committed by GitHub
parent e37fdef709
commit a9526917b8
29 changed files with 328 additions and 282 deletions

View File

@@ -11,9 +11,9 @@ namespace Flarum\Filter;
use Flarum\Event\ConfigurePostsQuery;
use Flarum\Post\Filter\PostFilterer;
use Flarum\Search\ApplySearchParametersTrait;
use Flarum\Search\SearchCriteria;
use Flarum\Search\SearchResults;
use Flarum\Query\ApplyQueryParametersTrait;
use Flarum\Query\QueryCriteria;
use Flarum\Query\QueryResults;
use Flarum\User\User;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Arr;
@@ -21,7 +21,7 @@ use InvalidArgumentException;
abstract class AbstractFilterer
{
use ApplySearchParametersTrait;
use ApplyQueryParametersTrait;
protected $filters;
@@ -40,14 +40,14 @@ abstract class AbstractFilterer
abstract protected function getQuery(User $actor): Builder;
/**
* @param SearchCriteria $criteria
* @param QueryCriteria $criteria
* @param mixed|null $limit
* @param int $offset
*
* @return SearchResults
* @return QueryResults
* @throws InvalidArgumentException
*/
public function filter(SearchCriteria $criteria, int $limit = null, int $offset = 0): SearchResults
public function filter(QueryCriteria $criteria, int $limit = null, int $offset = 0): QueryResults
{
$actor = $criteria->actor;
@@ -89,6 +89,6 @@ abstract class AbstractFilterer
$results->pop();
}
return new SearchResults($results, $areMoreResults);
return new QueryResults($results, $areMoreResults);
}
}

View File

@@ -9,14 +9,14 @@
namespace Flarum\Filter;
use Flarum\Discussion\Filter as DiscussionFilter;
use Flarum\Discussion\Filter\DiscussionFilterer;
use Flarum\Discussion\Query as DiscussionQuery;
use Flarum\Foundation\AbstractServiceProvider;
use Flarum\Foundation\ContainerUtil;
use Flarum\Post\Filter as PostFilter;
use Flarum\Post\Filter\PostFilterer;
use Flarum\User\Filter as UserFilter;
use Flarum\User\Filter\UserFilterer;
use Flarum\User\Query as UserQuery;
use Illuminate\Support\Arr;
class FilterServiceProvider extends AbstractServiceProvider
@@ -31,14 +31,14 @@ class FilterServiceProvider extends AbstractServiceProvider
$this->app->singleton('flarum.filter.filters', function () {
return [
DiscussionFilterer::class => [
DiscussionFilter\AuthorFilterGambit::class,
DiscussionFilter\CreatedFilterGambit::class,
DiscussionFilter\HiddenFilterGambit::class,
DiscussionFilter\UnreadFilterGambit::class,
DiscussionQuery\AuthorFilterGambit::class,
DiscussionQuery\CreatedFilterGambit::class,
DiscussionQuery\HiddenFilterGambit::class,
DiscussionQuery\UnreadFilterGambit::class,
],
UserFilterer::class => [
UserFilter\EmailFilterGambit::class,
UserFilter\GroupFilterGambit::class,
UserQuery\EmailFilterGambit::class,
UserQuery\GroupFilterGambit::class,
],
PostFilterer::class => [
PostFilter\AuthorFilter::class,

View File

@@ -9,79 +9,8 @@
namespace Flarum\Filter;
use Flarum\User\User;
use Illuminate\Database\Query\Builder;
use Flarum\Query\AbstractQueryState;
class FilterState
class FilterState extends AbstractQueryState
{
/**
* @var Builder
*/
protected $query;
/**
* @var User
*/
protected $actor;
/**
* @var mixed
*/
protected $defaultSort = [];
/**
* @param Builder $query
* @param User $actor
*/
public function __construct(Builder $query, User $actor, $defaultSort = [])
{
$this->query = $query;
$this->actor = $actor;
$this->defaultSort = $defaultSort;
}
/**
* Get the query builder for the search results query.
*
* @return Builder
*/
public function getQuery()
{
return $this->query;
}
/**
* Get the user who is performing the search.
*
* @return User
*/
public function getActor()
{
return $this->actor;
}
/**
* Get the default sort order for the search.
*
* @return array
*/
public function getDefaultSort()
{
return $this->defaultSort;
}
/**
* Set the default sort order for the search. This will only be applied if
* a sort order has not been specified in the search criteria.
*
* @param mixed $defaultSort An array of sort-order pairs, where the column
* is the key, and the order is the value. The order may be 'asc',
* 'desc', or an array of IDs to order by.
* Alternatively, a callable may be used.
* @return mixed
*/
public function setDefaultSort($defaultSort)
{
$this->defaultSort = $defaultSort;
}
}