From 899bb7e3f0d2731428ab2aee0624484e9b92403e Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Sun, 28 Feb 2021 23:28:19 -0500 Subject: [PATCH 1/8] Move shared search stuff to Query namespace --- .../Controller/ListDiscussionsController.php | 4 +- src/Api/Controller/ListPostsController.php | 4 +- src/Api/Controller/ListUsersController.php | 4 +- src/Discussion/Event/Searching.php | 8 +-- src/Discussion/Search/DiscussionSearcher.php | 4 +- src/Extend/Filter.php | 2 +- src/Extend/SimpleFlarumSearch.php | 2 +- src/Filter/AbstractFilterer.php | 16 ++--- src/Query/ApplyQueryParametersTrait.php | 63 +++++++++++++++++++ src/Query/QueryCriteria.php | 58 +++++++++++++++++ src/Query/QueryResults.php | 52 +++++++++++++++ src/Search/AbstractSearcher.php | 15 +++-- src/Search/ApplySearchParametersTrait.php | 63 ------------------- src/Search/SearchCriteria.php | 53 +--------------- src/Search/SearchResults.php | 51 ++------------- src/User/Event/Searching.php | 8 +-- src/User/Search/UserSearcher.php | 8 +-- .../extenders/SimpleFlarumSearchTest.php | 4 +- 18 files changed, 220 insertions(+), 199 deletions(-) create mode 100644 src/Query/ApplyQueryParametersTrait.php create mode 100644 src/Query/QueryCriteria.php create mode 100644 src/Query/QueryResults.php delete mode 100644 src/Search/ApplySearchParametersTrait.php diff --git a/src/Api/Controller/ListDiscussionsController.php b/src/Api/Controller/ListDiscussionsController.php index c2b4af6d9f..83b016698f 100644 --- a/src/Api/Controller/ListDiscussionsController.php +++ b/src/Api/Controller/ListDiscussionsController.php @@ -14,7 +14,7 @@ use Flarum\Discussion\Filter\DiscussionFilterer; use Flarum\Discussion\Search\DiscussionSearcher; use Flarum\Http\UrlGenerator; -use Flarum\Search\SearchCriteria; +use Flarum\Query\QueryCriteria; use Psr\Http\Message\ServerRequestInterface; use Tobscure\JsonApi\Document; @@ -93,7 +93,7 @@ protected function data(ServerRequestInterface $request, Document $document) $offset = $this->extractOffset($request); $include = array_merge($this->extractInclude($request), ['state']); - $criteria = new SearchCriteria($actor, $filters, $sort); + $criteria = new QueryCriteria($actor, $filters, $sort); if (array_key_exists('q', $filters)) { $results = $this->searcher->search($criteria, $limit, $offset); } else { diff --git a/src/Api/Controller/ListPostsController.php b/src/Api/Controller/ListPostsController.php index 7cb429b4b0..df03b6dfa8 100644 --- a/src/Api/Controller/ListPostsController.php +++ b/src/Api/Controller/ListPostsController.php @@ -13,7 +13,7 @@ use Flarum\Http\UrlGenerator; use Flarum\Post\Filter\PostFilterer; use Flarum\Post\PostRepository; -use Flarum\Search\SearchCriteria; +use Flarum\Query\QueryCriteria; use Illuminate\Support\Arr; use Psr\Http\Message\ServerRequestInterface; use Tobscure\JsonApi\Document; @@ -83,7 +83,7 @@ protected function data(ServerRequestInterface $request, Document $document) $offset = $this->extractOffset($request); $include = $this->extractInclude($request); - $results = $this->filterer->filter(new SearchCriteria($actor, $filters, $sort), $limit, $offset); + $results = $this->filterer->filter(new QueryCriteria($actor, $filters, $sort), $limit, $offset); $document->addPaginationLinks( $this->url->to('api')->route('posts.index'), diff --git a/src/Api/Controller/ListUsersController.php b/src/Api/Controller/ListUsersController.php index 6e7bb4f846..6e3c03652c 100644 --- a/src/Api/Controller/ListUsersController.php +++ b/src/Api/Controller/ListUsersController.php @@ -11,7 +11,7 @@ use Flarum\Api\Serializer\UserSerializer; use Flarum\Http\UrlGenerator; -use Flarum\Search\SearchCriteria; +use Flarum\Query\QueryCriteria; use Flarum\User\Filter\UserFilterer; use Flarum\User\Search\UserSearcher; use Psr\Http\Message\ServerRequestInterface; @@ -83,7 +83,7 @@ protected function data(ServerRequestInterface $request, Document $document) $offset = $this->extractOffset($request); $include = $this->extractInclude($request); - $criteria = new SearchCriteria($actor, $filters, $sort); + $criteria = new QueryCriteria($actor, $filters, $sort); if (array_key_exists('q', $filters)) { $results = $this->searcher->search($criteria, $limit, $offset); } else { diff --git a/src/Discussion/Event/Searching.php b/src/Discussion/Event/Searching.php index dde2b47b93..61f0b89162 100644 --- a/src/Discussion/Event/Searching.php +++ b/src/Discussion/Event/Searching.php @@ -9,7 +9,7 @@ namespace Flarum\Discussion\Event; -use Flarum\Search\SearchCriteria; +use Flarum\Query\QueryCriteria; use Flarum\Search\SearchState; /** @@ -23,15 +23,15 @@ class Searching public $search; /** - * @var \Flarum\Search\SearchCriteria + * @var \Flarum\Query\QueryCriteria */ public $criteria; /** * @param SearchState $search - * @param \Flarum\Search\SearchCriteria $criteria + * @param \Flarum\Query\QueryCriteria $criteria */ - public function __construct(SearchState $search, SearchCriteria $criteria) + public function __construct(SearchState $search, QueryCriteria $criteria) { $this->search = $search; $this->criteria = $criteria; diff --git a/src/Discussion/Search/DiscussionSearcher.php b/src/Discussion/Search/DiscussionSearcher.php index 05a16a3bb8..4912e78f8e 100644 --- a/src/Discussion/Search/DiscussionSearcher.php +++ b/src/Discussion/Search/DiscussionSearcher.php @@ -13,7 +13,7 @@ use Flarum\Discussion\Event\Searching; use Flarum\Search\AbstractSearcher; use Flarum\Search\GambitManager; -use Flarum\Search\SearchCriteria; +use Flarum\Query\QueryCriteria; use Flarum\Search\SearchState; use Flarum\User\User; use Illuminate\Contracts\Events\Dispatcher; @@ -53,7 +53,7 @@ protected function getQuery(User $actor): Builder /** * @deprecated along with the Searching event, remove in Beta 17. */ - protected function mutateSearch(SearchState $search, SearchCriteria $criteria) + protected function mutateSearch(SearchState $search, QueryCriteria $criteria) { parent::mutateSearch($search, $criteria); diff --git a/src/Extend/Filter.php b/src/Extend/Filter.php index 49f54c5419..ef694565e3 100644 --- a/src/Extend/Filter.php +++ b/src/Extend/Filter.php @@ -45,7 +45,7 @@ public function addFilter(string $filterClass) * * The callback can be a closure or an invokable class, and should accept: * - Flarum\Filter\FilterState $filter - * - Flarum\Search\SearchCriteria $criteria + * - Flarum\Query\QueryCriteria $criteria */ public function addFilterMutator($callback) { diff --git a/src/Extend/SimpleFlarumSearch.php b/src/Extend/SimpleFlarumSearch.php index 678ed67541..cce5577152 100644 --- a/src/Extend/SimpleFlarumSearch.php +++ b/src/Extend/SimpleFlarumSearch.php @@ -61,7 +61,7 @@ public function setFullTextGambit($gambitClass) * * The callback can be a closure or an invokable class, and should accept: * - Flarum\Search\SearchState $search - * - Flarum\Search\SearchCriteria $criteria + * - Flarum\Query\QueryCriteria $criteria */ public function addSearchMutator($callback) { diff --git a/src/Filter/AbstractFilterer.php b/src/Filter/AbstractFilterer.php index 896e6dfef7..c36f4a92e5 100644 --- a/src/Filter/AbstractFilterer.php +++ b/src/Filter/AbstractFilterer.php @@ -11,9 +11,9 @@ 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 @@ abstract class AbstractFilterer { - use ApplySearchParametersTrait; + use ApplyQueryParametersTrait; protected $filters; @@ -40,14 +40,14 @@ public function __construct(array $filters, array $filterMutators) 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 @@ public function filter(SearchCriteria $criteria, int $limit = null, int $offset $results->pop(); } - return new SearchResults($results, $areMoreResults); + return new QueryResults($results, $areMoreResults); } } diff --git a/src/Query/ApplyQueryParametersTrait.php b/src/Query/ApplyQueryParametersTrait.php new file mode 100644 index 0000000000..638ee7359d --- /dev/null +++ b/src/Query/ApplyQueryParametersTrait.php @@ -0,0 +1,63 @@ +getDefaultSort(); + + if (is_callable($sort)) { + $sort($query->getQuery()); + } else { + foreach ($sort as $field => $order) { + if (is_array($order)) { + foreach ($order as $value) { + $query->getQuery()->orderByRaw(Str::snake($field).' != ?', [$value]); + } + } else { + $query->getQuery()->orderBy(Str::snake($field), $order); + } + } + } + } + + /** + * @param FilterState $query + * @param int $offset + */ + protected function applyOffset(FilterState $query, $offset) + { + if ($offset > 0) { + $query->getQuery()->skip($offset); + } + } + + /** + * @param FilterState $query + * @param int|null $limit + */ + protected function applyLimit(FilterState $query, $limit) + { + if ($limit > 0) { + $query->getQuery()->take($limit); + } + } +} diff --git a/src/Query/QueryCriteria.php b/src/Query/QueryCriteria.php new file mode 100644 index 0000000000..ad3e93b355 --- /dev/null +++ b/src/Query/QueryCriteria.php @@ -0,0 +1,58 @@ +actor = $actor; + $this->query = $query; + $this->sort = $sort; + } +} diff --git a/src/Query/QueryResults.php b/src/Query/QueryResults.php new file mode 100644 index 0000000000..b35058f427 --- /dev/null +++ b/src/Query/QueryResults.php @@ -0,0 +1,52 @@ +results = $results; + $this->areMoreResults = $areMoreResults; + } + + /** + * @return Collection + */ + public function getResults() + { + return $this->results; + } + + /** + * @return bool + */ + public function areMoreResults() + { + return $this->areMoreResults; + } +} diff --git a/src/Search/AbstractSearcher.php b/src/Search/AbstractSearcher.php index 58de86243e..c2fe4d9f81 100644 --- a/src/Search/AbstractSearcher.php +++ b/src/Search/AbstractSearcher.php @@ -9,12 +9,15 @@ namespace Flarum\Search; +use Flarum\Query\ApplyQueryParametersTrait; +use Flarum\Query\QueryCriteria; +use Flarum\Query\QueryResults; use Flarum\User\User; use Illuminate\Database\Eloquent\Builder; abstract class AbstractSearcher { - use ApplySearchParametersTrait; + use ApplyQueryParametersTrait; /** * @var GambitManager @@ -34,7 +37,7 @@ public function __construct(GambitManager $gambits, array $searchMutators) abstract protected function getQuery(User $actor): Builder; - protected function mutateSearch(SearchState $search, SearchCriteria $criteria) + protected function mutateSearch(SearchState $search, QueryCriteria $criteria) { foreach ($this->searchMutators as $mutator) { $mutator($search, $criteria); @@ -42,14 +45,14 @@ protected function mutateSearch(SearchState $search, SearchCriteria $criteria) } /** - * @param SearchCriteria $criteria + * @param QueryCriteria $criteria * @param int|null $limit * @param int $offset * - * @return SearchResults + * @return QueryResults * @throws InvalidArgumentException */ - public function search(SearchCriteria $criteria, $limit = null, $offset = 0): SearchResults + public function search(QueryCriteria $criteria, $limit = null, $offset = 0): QueryResults { $actor = $criteria->actor; @@ -73,6 +76,6 @@ public function search(SearchCriteria $criteria, $limit = null, $offset = 0): Se $results->pop(); } - return new SearchResults($results, $areMoreResults); + return new QueryResults($results, $areMoreResults); } } diff --git a/src/Search/ApplySearchParametersTrait.php b/src/Search/ApplySearchParametersTrait.php deleted file mode 100644 index 2b77a5bd8a..0000000000 --- a/src/Search/ApplySearchParametersTrait.php +++ /dev/null @@ -1,63 +0,0 @@ -getDefaultSort(); - - if (is_callable($sort)) { - $sort($search->getQuery()); - } else { - foreach ($sort as $field => $order) { - if (is_array($order)) { - foreach ($order as $value) { - $search->getQuery()->orderByRaw(Str::snake($field).' != ?', [$value]); - } - } else { - $search->getQuery()->orderBy(Str::snake($field), $order); - } - } - } - } - - /** - * @param FilterState $search - * @param int $offset - */ - protected function applyOffset(FilterState $search, $offset) - { - if ($offset > 0) { - $search->getQuery()->skip($offset); - } - } - - /** - * @param FilterState $search - * @param int|null $limit - */ - protected function applyLimit(FilterState $search, $limit) - { - if ($limit > 0) { - $search->getQuery()->take($limit); - } - } -} diff --git a/src/Search/SearchCriteria.php b/src/Search/SearchCriteria.php index 30820dd670..260f2c302d 100644 --- a/src/Search/SearchCriteria.php +++ b/src/Search/SearchCriteria.php @@ -1,57 +1,8 @@ actor = $actor; - $this->query = $query; - $this->sort = $sort; - } -} +class SearchCriteria {} diff --git a/src/Search/SearchResults.php b/src/Search/SearchResults.php index 82cbad3ca8..328d459fb4 100644 --- a/src/Search/SearchResults.php +++ b/src/Search/SearchResults.php @@ -1,51 +1,8 @@ results = $results; - $this->areMoreResults = $areMoreResults; - } - - /** - * @return Collection - */ - public function getResults() - { - return $this->results; - } - - /** - * @return bool - */ - public function areMoreResults() - { - return $this->areMoreResults; - } -} +/** + * @deprecated beta 16, remove beta 17 + */ +class SearchResults {} diff --git a/src/User/Event/Searching.php b/src/User/Event/Searching.php index ff6debac7c..78941092e1 100644 --- a/src/User/Event/Searching.php +++ b/src/User/Event/Searching.php @@ -9,7 +9,7 @@ namespace Flarum\User\Event; -use Flarum\Search\SearchCriteria; +use Flarum\Query\QueryCriteria; use Flarum\Search\SearchState; /** @@ -23,15 +23,15 @@ class Searching public $search; /** - * @var SearchCriteria + * @var QueryCriteria */ public $criteria; /** * @param SearchState $search - * @param SearchCriteria $criteria + * @param QueryCriteria $criteria */ - public function __construct(SearchState $search, SearchCriteria $criteria) + public function __construct(SearchState $search, QueryCriteria $criteria) { $this->search = $search; $this->criteria = $criteria; diff --git a/src/User/Search/UserSearcher.php b/src/User/Search/UserSearcher.php index d0ac09970c..2a0185cd5d 100644 --- a/src/User/Search/UserSearcher.php +++ b/src/User/Search/UserSearcher.php @@ -11,7 +11,7 @@ use Flarum\Search\AbstractSearcher; use Flarum\Search\GambitManager; -use Flarum\Search\SearchCriteria; +use Flarum\Query\QueryCriteria; use Flarum\Search\SearchState; use Flarum\User\Event\Searching; use Flarum\User\User; @@ -20,8 +20,8 @@ use Illuminate\Database\Eloquent\Builder; /** - * Takes a UserSearchCriteria object, performs a search using gambits, - * and spits out a UserSearchResults object. + * Takes a UserQueryCriteria object, performs a search using gambits, + * and spits out a UserQueryResults object. */ class UserSearcher extends AbstractSearcher { @@ -57,7 +57,7 @@ protected function getQuery(User $actor): Builder /** * @deprecated along with the Searching event, remove in Beta 17. */ - protected function mutateSearch(SearchState $search, SearchCriteria $criteria) + protected function mutateSearch(SearchState $search, QueryCriteria $criteria) { parent::mutateSearch($search, $criteria); diff --git a/tests/integration/extenders/SimpleFlarumSearchTest.php b/tests/integration/extenders/SimpleFlarumSearchTest.php index 52d8dfa9a6..ccf0056405 100644 --- a/tests/integration/extenders/SimpleFlarumSearchTest.php +++ b/tests/integration/extenders/SimpleFlarumSearchTest.php @@ -14,7 +14,7 @@ use Flarum\Extend; use Flarum\Search\AbstractRegexGambit; use Flarum\Search\GambitInterface; -use Flarum\Search\SearchCriteria; +use Flarum\Query\QueryCriteria; use Flarum\Search\SearchState; use Flarum\Tests\integration\RetrievesAuthorizedUsers; use Flarum\Tests\integration\TestCase; @@ -64,7 +64,7 @@ public function searchDiscussions($query, $limit = null) $actor = User::find(1); - $criteria = new SearchCriteria($actor, ['q' => $query]); + $criteria = new QueryCriteria($actor, ['q' => $query]); return $this->app()->getContainer()->make(DiscussionSearcher::class)->search($criteria, $limit)->getResults(); } From 2457c493acb73a58358c8f488760a04adb6f6778 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Mon, 1 Mar 2021 04:28:47 +0000 Subject: [PATCH 2/8] Apply fixes from StyleCI [ci skip] [skip ci] --- src/Discussion/Search/DiscussionSearcher.php | 2 +- src/Search/SearchCriteria.php | 11 ++++++++++- src/Search/SearchResults.php | 11 ++++++++++- src/User/Search/UserSearcher.php | 2 +- .../integration/extenders/SimpleFlarumSearchTest.php | 2 +- 5 files changed, 23 insertions(+), 5 deletions(-) diff --git a/src/Discussion/Search/DiscussionSearcher.php b/src/Discussion/Search/DiscussionSearcher.php index 4912e78f8e..7809936a85 100644 --- a/src/Discussion/Search/DiscussionSearcher.php +++ b/src/Discussion/Search/DiscussionSearcher.php @@ -11,9 +11,9 @@ use Flarum\Discussion\DiscussionRepository; use Flarum\Discussion\Event\Searching; +use Flarum\Query\QueryCriteria; use Flarum\Search\AbstractSearcher; use Flarum\Search\GambitManager; -use Flarum\Query\QueryCriteria; use Flarum\Search\SearchState; use Flarum\User\User; use Illuminate\Contracts\Events\Dispatcher; diff --git a/src/Search/SearchCriteria.php b/src/Search/SearchCriteria.php index 260f2c302d..0437e3241d 100644 --- a/src/Search/SearchCriteria.php +++ b/src/Search/SearchCriteria.php @@ -1,8 +1,17 @@ Date: Mon, 1 Mar 2021 16:38:40 -0500 Subject: [PATCH 3/8] Introduce AbstractQueryState class --- src/Filter/FilterState.php | 77 +--------------------------- src/Query/AbstractQueryState.php | 87 ++++++++++++++++++++++++++++++++ src/Search/AbstractSearch.php | 4 +- 3 files changed, 91 insertions(+), 77 deletions(-) create mode 100644 src/Query/AbstractQueryState.php diff --git a/src/Filter/FilterState.php b/src/Filter/FilterState.php index cc5a4a2595..69c95c4382 100644 --- a/src/Filter/FilterState.php +++ b/src/Filter/FilterState.php @@ -9,79 +9,6 @@ namespace Flarum\Filter; -use Flarum\User\User; -use Illuminate\Database\Query\Builder; +use Flarum\Query\AbstractQueryState; -class FilterState -{ - /** - * @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; - } -} +class FilterState extends AbstractQueryState {} diff --git a/src/Query/AbstractQueryState.php b/src/Query/AbstractQueryState.php new file mode 100644 index 0000000000..257871961c --- /dev/null +++ b/src/Query/AbstractQueryState.php @@ -0,0 +1,87 @@ +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; + } +} diff --git a/src/Search/AbstractSearch.php b/src/Search/AbstractSearch.php index adac8ceb23..ce9b4a77da 100644 --- a/src/Search/AbstractSearch.php +++ b/src/Search/AbstractSearch.php @@ -9,13 +9,13 @@ namespace Flarum\Search; -use Flarum\Filter\FilterState; +use Flarum\Query\AbstractQueryState; /** * @deprecated, use SearchState instead. * These methods should be transferred over to SearchState in beta 17. */ -class AbstractSearch extends FilterState +class AbstractSearch extends AbstractQueryState { /** * @var GambitInterface[] From 95f31e9671d54f6df270f59fdec6db70d525b99d Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Mon, 1 Mar 2021 21:40:59 +0000 Subject: [PATCH 4/8] Apply fixes from StyleCI [ci skip] [skip ci] --- src/Filter/FilterState.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Filter/FilterState.php b/src/Filter/FilterState.php index 69c95c4382..b9e22611e5 100644 --- a/src/Filter/FilterState.php +++ b/src/Filter/FilterState.php @@ -11,4 +11,6 @@ use Flarum\Query\AbstractQueryState; -class FilterState extends AbstractQueryState {} +class FilterState extends AbstractQueryState +{ +} From fe1b7d1b0c9c4a0167117227cb01f3b69336b4b2 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Mon, 1 Mar 2021 16:43:16 -0500 Subject: [PATCH 5/8] Move FilterGambits to a Query namespace --- .../{Filter => Query}/AuthorFilterGambit.php | 2 +- .../{Filter => Query}/CreatedFilterGambit.php | 2 +- .../{Filter => Query}/HiddenFilterGambit.php | 2 +- .../{Filter => Query}/UnreadFilterGambit.php | 2 +- src/Filter/FilterServiceProvider.php | 16 +++++++------- src/Search/SearchServiceProvider.php | 21 +++++++------------ .../{Filter => Query}/EmailFilterGambit.php | 2 +- .../{Filter => Query}/GroupFilterGambit.php | 2 +- 8 files changed, 22 insertions(+), 27 deletions(-) rename src/Discussion/{Filter => Query}/AuthorFilterGambit.php (97%) rename src/Discussion/{Filter => Query}/CreatedFilterGambit.php (98%) rename src/Discussion/{Filter => Query}/HiddenFilterGambit.php (97%) rename src/Discussion/{Filter => Query}/UnreadFilterGambit.php (98%) rename src/User/{Filter => Query}/EmailFilterGambit.php (98%) rename src/User/{Filter => Query}/GroupFilterGambit.php (98%) diff --git a/src/Discussion/Filter/AuthorFilterGambit.php b/src/Discussion/Query/AuthorFilterGambit.php similarity index 97% rename from src/Discussion/Filter/AuthorFilterGambit.php rename to src/Discussion/Query/AuthorFilterGambit.php index 616b8be385..7f4426c7b6 100644 --- a/src/Discussion/Filter/AuthorFilterGambit.php +++ b/src/Discussion/Query/AuthorFilterGambit.php @@ -7,7 +7,7 @@ * LICENSE file that was distributed with this source code. */ -namespace Flarum\Discussion\Filter; +namespace Flarum\Discussion\Query; use Flarum\Filter\FilterInterface; use Flarum\Filter\FilterState; diff --git a/src/Discussion/Filter/CreatedFilterGambit.php b/src/Discussion/Query/CreatedFilterGambit.php similarity index 98% rename from src/Discussion/Filter/CreatedFilterGambit.php rename to src/Discussion/Query/CreatedFilterGambit.php index 638d848845..66bd1d69b8 100644 --- a/src/Discussion/Filter/CreatedFilterGambit.php +++ b/src/Discussion/Query/CreatedFilterGambit.php @@ -7,7 +7,7 @@ * LICENSE file that was distributed with this source code. */ -namespace Flarum\Discussion\Filter; +namespace Flarum\Discussion\Query; use Flarum\Filter\FilterInterface; use Flarum\Filter\FilterState; diff --git a/src/Discussion/Filter/HiddenFilterGambit.php b/src/Discussion/Query/HiddenFilterGambit.php similarity index 97% rename from src/Discussion/Filter/HiddenFilterGambit.php rename to src/Discussion/Query/HiddenFilterGambit.php index 133167a360..2072428d9a 100644 --- a/src/Discussion/Filter/HiddenFilterGambit.php +++ b/src/Discussion/Query/HiddenFilterGambit.php @@ -7,7 +7,7 @@ * LICENSE file that was distributed with this source code. */ -namespace Flarum\Discussion\Filter; +namespace Flarum\Discussion\Query; use Flarum\Filter\FilterInterface; use Flarum\Filter\FilterState; diff --git a/src/Discussion/Filter/UnreadFilterGambit.php b/src/Discussion/Query/UnreadFilterGambit.php similarity index 98% rename from src/Discussion/Filter/UnreadFilterGambit.php rename to src/Discussion/Query/UnreadFilterGambit.php index 06e6efb8e9..44bd7c264f 100644 --- a/src/Discussion/Filter/UnreadFilterGambit.php +++ b/src/Discussion/Query/UnreadFilterGambit.php @@ -7,7 +7,7 @@ * LICENSE file that was distributed with this source code. */ -namespace Flarum\Discussion\Filter; +namespace Flarum\Discussion\Query; use Flarum\Discussion\DiscussionRepository; use Flarum\Filter\FilterInterface; diff --git a/src/Filter/FilterServiceProvider.php b/src/Filter/FilterServiceProvider.php index 530a598f13..d2484287e1 100644 --- a/src/Filter/FilterServiceProvider.php +++ b/src/Filter/FilterServiceProvider.php @@ -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 @@ public function register() $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, diff --git a/src/Search/SearchServiceProvider.php b/src/Search/SearchServiceProvider.php index 264958f92b..518d50829d 100644 --- a/src/Search/SearchServiceProvider.php +++ b/src/Search/SearchServiceProvider.php @@ -9,18 +9,13 @@ namespace Flarum\Search; -use Flarum\Discussion\Filter\AuthorFilterGambit; -use Flarum\Discussion\Filter\CreatedFilterGambit; -use Flarum\Discussion\Filter\HiddenFilterGambit; -use Flarum\Discussion\Filter\UnreadFilterGambit; -use Flarum\Discussion\Search\DiscussionSearcher; +use Flarum\Discussion\Query as DiscussionQuery; use Flarum\Discussion\Search\Gambit\FulltextGambit as DiscussionFulltextGambit; use Flarum\Event\ConfigureDiscussionGambits; use Flarum\Event\ConfigureUserGambits; use Flarum\Foundation\AbstractServiceProvider; use Flarum\Foundation\ContainerUtil; -use Flarum\User\Filter\EmailFilterGambit; -use Flarum\User\Filter\GroupFilterGambit; +use Flarum\User\Query as UserQuery; use Flarum\User\Search\Gambit\FulltextGambit as UserFulltextGambit; use Flarum\User\Search\UserSearcher; use Illuminate\Support\Arr; @@ -42,14 +37,14 @@ public function register() $this->app->singleton('flarum.simple_search.gambits', function () { return [ DiscussionSearcher::class => [ - AuthorFilterGambit::class, - CreatedFilterGambit::class, - HiddenFilterGambit::class, - UnreadFilterGambit::class + DiscussionQuery\AuthorFilterGambit::class, + DiscussionQuery\CreatedFilterGambit::class, + DiscussionQuery\HiddenFilterGambit::class, + DiscussionQuery\UnreadFilterGambit::class, ], UserSearcher::class => [ - EmailFilterGambit::class, - GroupFilterGambit::class + UserQuery\EmailFilterGambit::class, + UserQuery\GroupFilterGambit::class, ] ]; }); diff --git a/src/User/Filter/EmailFilterGambit.php b/src/User/Query/EmailFilterGambit.php similarity index 98% rename from src/User/Filter/EmailFilterGambit.php rename to src/User/Query/EmailFilterGambit.php index 3fc4ae9abf..0da13ce5d6 100644 --- a/src/User/Filter/EmailFilterGambit.php +++ b/src/User/Query/EmailFilterGambit.php @@ -7,7 +7,7 @@ * LICENSE file that was distributed with this source code. */ -namespace Flarum\User\Filter; +namespace Flarum\User\Query; use Flarum\Filter\FilterInterface; use Flarum\Filter\FilterState; diff --git a/src/User/Filter/GroupFilterGambit.php b/src/User/Query/GroupFilterGambit.php similarity index 98% rename from src/User/Filter/GroupFilterGambit.php rename to src/User/Query/GroupFilterGambit.php index 4d1c445f8c..9d419a7b90 100644 --- a/src/User/Filter/GroupFilterGambit.php +++ b/src/User/Query/GroupFilterGambit.php @@ -7,7 +7,7 @@ * LICENSE file that was distributed with this source code. */ -namespace Flarum\User\Filter; +namespace Flarum\User\Query; use Flarum\Filter\FilterInterface; use Flarum\Filter\FilterState; From 6a205d3a0dbd637ba8ab3b44a67cb780cb767d0e Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Mon, 1 Mar 2021 16:47:07 -0500 Subject: [PATCH 6/8] Fix deleted line --- src/Search/SearchServiceProvider.php | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Search/SearchServiceProvider.php b/src/Search/SearchServiceProvider.php index 518d50829d..943c0d3ddc 100644 --- a/src/Search/SearchServiceProvider.php +++ b/src/Search/SearchServiceProvider.php @@ -10,6 +10,7 @@ namespace Flarum\Search; use Flarum\Discussion\Query as DiscussionQuery; +use Flarum\Discussion\Search\DiscussionSearcher; use Flarum\Discussion\Search\Gambit\FulltextGambit as DiscussionFulltextGambit; use Flarum\Event\ConfigureDiscussionGambits; use Flarum\Event\ConfigureUserGambits; From f273642aba1156e2b59602c684f76253d1b00e64 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Mon, 1 Mar 2021 16:48:05 -0500 Subject: [PATCH 7/8] Use abstract query state for apply query params trait --- src/Query/ApplyQueryParametersTrait.php | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Query/ApplyQueryParametersTrait.php b/src/Query/ApplyQueryParametersTrait.php index 638ee7359d..05c540304d 100644 --- a/src/Query/ApplyQueryParametersTrait.php +++ b/src/Query/ApplyQueryParametersTrait.php @@ -9,7 +9,6 @@ namespace Flarum\Query; -use Flarum\Filter\FilterState; use Illuminate\Support\Str; trait ApplyQueryParametersTrait @@ -17,10 +16,10 @@ trait ApplyQueryParametersTrait /** * Apply sort criteria to a discussion query. * - * @param FilterState $query + * @param AbstractQueryState $query * @param array $sort */ - protected function applySort(FilterState $query, array $sort = null) + protected function applySort(AbstractQueryState $query, array $sort = null) { $sort = $sort ?: $query->getDefaultSort(); @@ -40,10 +39,10 @@ protected function applySort(FilterState $query, array $sort = null) } /** - * @param FilterState $query + * @param AbstractQueryState $query * @param int $offset */ - protected function applyOffset(FilterState $query, $offset) + protected function applyOffset(AbstractQueryState $query, $offset) { if ($offset > 0) { $query->getQuery()->skip($offset); @@ -51,10 +50,10 @@ protected function applyOffset(FilterState $query, $offset) } /** - * @param FilterState $query + * @param AbstractQueryState $query * @param int|null $limit */ - protected function applyLimit(FilterState $query, $limit) + protected function applyLimit(AbstractQueryState $query, $limit) { if ($limit > 0) { $query->getQuery()->take($limit); From ce309f960c3c450705b3fd114a57578376692d41 Mon Sep 17 00:00:00 2001 From: Alexander Skvortsov Date: Mon, 1 Mar 2021 17:42:48 -0500 Subject: [PATCH 8/8] Remove unnecessary comment --- src/User/Search/UserSearcher.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/User/Search/UserSearcher.php b/src/User/Search/UserSearcher.php index 0741945d62..8b61b224d4 100644 --- a/src/User/Search/UserSearcher.php +++ b/src/User/Search/UserSearcher.php @@ -19,10 +19,6 @@ use Illuminate\Contracts\Events\Dispatcher; use Illuminate\Database\Eloquent\Builder; -/** - * Takes a UserQueryCriteria object, performs a search using gambits, - * and spits out a UserQueryResults object. - */ class UserSearcher extends AbstractSearcher { /**