From 320180efc469916343d4ba425fff173b839a19d0 Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Tue, 16 Jun 2015 16:58:10 +0930 Subject: [PATCH] Remove total results from discussion searching MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It’s too inefficient (requires a whole table scan) to do a query like: select count(*) from discussions where [conditions determining visibility] --- .../core/src/Api/Actions/Discussions/IndexAction.php | 6 +----- .../Search/Discussions/DiscussionSearchResults.php | 10 +--------- .../src/Core/Search/Discussions/DiscussionSearcher.php | 4 +--- 3 files changed, 3 insertions(+), 17 deletions(-) diff --git a/framework/core/src/Api/Actions/Discussions/IndexAction.php b/framework/core/src/Api/Actions/Discussions/IndexAction.php index c0cd6aaed..6d75bcece 100644 --- a/framework/core/src/Api/Actions/Discussions/IndexAction.php +++ b/framework/core/src/Api/Actions/Discussions/IndexAction.php @@ -74,11 +74,7 @@ class IndexAction extends SerializeCollectionAction $load = array_merge($request->include, ['state']); $results = $this->searcher->search($criteria, $request->limit, $request->offset, $load); - if (($total = $results->getTotal()) !== null) { - $response->content->addMeta('total', $total); - } - - static::addPaginationLinks($response, $request, route('flarum.api.discussions.index'), $total ?: $results->areMoreResults()); + static::addPaginationLinks($response, $request, route('flarum.api.discussions.index'), $results->areMoreResults()); return $results->getDiscussions(); } diff --git a/framework/core/src/Core/Search/Discussions/DiscussionSearchResults.php b/framework/core/src/Core/Search/Discussions/DiscussionSearchResults.php index eb974f773..58219cde2 100644 --- a/framework/core/src/Core/Search/Discussions/DiscussionSearchResults.php +++ b/framework/core/src/Core/Search/Discussions/DiscussionSearchResults.php @@ -6,13 +6,10 @@ class DiscussionSearchResults protected $areMoreResults; - protected $total; - - public function __construct($discussions, $areMoreResults, $total) + public function __construct($discussions, $areMoreResults) { $this->discussions = $discussions; $this->areMoreResults = $areMoreResults; - $this->total = $total; } public function getDiscussions() @@ -20,11 +17,6 @@ class DiscussionSearchResults return $this->discussions; } - public function getTotal() - { - return $this->total; - } - public function areMoreResults() { return $this->areMoreResults; diff --git a/framework/core/src/Core/Search/Discussions/DiscussionSearcher.php b/framework/core/src/Core/Search/Discussions/DiscussionSearcher.php index 742ba664c..82b571901 100644 --- a/framework/core/src/Core/Search/Discussions/DiscussionSearcher.php +++ b/framework/core/src/Core/Search/Discussions/DiscussionSearcher.php @@ -63,8 +63,6 @@ class DiscussionSearcher implements SearcherInterface $this->gambits->apply($criteria->query, $this); - $total = $this->query->count(); - $sort = $criteria->sort ?: $this->defaultSort; foreach ($sort as $field => $order) { @@ -112,6 +110,6 @@ class DiscussionSearcher implements SearcherInterface Discussion::setStateUser($this->user); $discussions->load($load); - return new DiscussionSearchResults($discussions, $areMoreResults, $total); + return new DiscussionSearchResults($discussions, $areMoreResults); } }