Remove total results from discussion searching

It’s too inefficient (requires a whole table scan) to do a query like:
select count(*) from discussions where [conditions determining
visibility]
This commit is contained in:
Toby Zerner 2015-06-16 16:58:10 +09:30
parent c1e3820480
commit 64e6b7d26c
3 changed files with 3 additions and 17 deletions

View File

@ -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();
}

View File

@ -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;

View File

@ -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);
}
}