1
0
Fork 0
mirror of https://github.com/wallabag/wallabag.git synced 2025-07-22 17:18:37 +00:00

Instead of selecting the whole data, just count it

Instead of performing a complex select (to retrieve all data for entry, etc...) just select the counter and retrieve it.

Down from ~50ms to ~30ms on the unread page (with 500 items)
This commit is contained in:
Jeremy Benoist 2016-09-03 18:11:07 +02:00
parent 8f8654913c
commit 543da3e0b7
No known key found for this signature in database
GPG key ID: BCA73962457ACC3C
2 changed files with 13 additions and 13 deletions

View file

@ -49,7 +49,7 @@ class DeveloperController extends Controller
$this->get('session')->getFlashBag()->add( $this->get('session')->getFlashBag()->add(
'notice', 'notice',
$this->get('translator')->trans('flashes.developer.notice.client_created', array('%name%' => $client->getName())) $this->get('translator')->trans('flashes.developer.notice.client_created', ['%name%' => $client->getName()])
); );
return $this->render('WallabagCoreBundle:Developer:client_parameters.html.twig', [ return $this->render('WallabagCoreBundle:Developer:client_parameters.html.twig', [
@ -81,7 +81,7 @@ class DeveloperController extends Controller
$this->get('session')->getFlashBag()->add( $this->get('session')->getFlashBag()->add(
'notice', 'notice',
$this->get('translator')->trans('flashes.developer.notice.client_deleted', array('%name%' => $client->getName())) $this->get('translator')->trans('flashes.developer.notice.client_deleted', ['%name%' => $client->getName()])
); );
return $this->redirect($this->generateUrl('developer')); return $this->redirect($this->generateUrl('developer'));

View file

@ -33,31 +33,31 @@ class WallabagExtension extends \Twig_Extension implements \Twig_Extension_Globa
$user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null; $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
if (null === $user || !is_object($user)) { if (null === $user || !is_object($user)) {
return array(); return [];
} }
$unreadEntries = $this->repository->enableCache( $unreadEntries = $this->repository->enableCache(
$this->repository->getBuilderForUnreadByUser($user->getId())->getQuery() $this->repository->getBuilderForUnreadByUser($user->getId())->select('COUNT(e.id)')->getQuery()
); );
$starredEntries = $this->repository->enableCache( $starredEntries = $this->repository->enableCache(
$this->repository->getBuilderForStarredByUser($user->getId())->getQuery() $this->repository->getBuilderForStarredByUser($user->getId())->select('COUNT(e.id)')->getQuery()
); );
$archivedEntries = $this->repository->enableCache( $archivedEntries = $this->repository->enableCache(
$this->repository->getBuilderForArchiveByUser($user->getId())->getQuery() $this->repository->getBuilderForArchiveByUser($user->getId())->select('COUNT(e.id)')->getQuery()
); );
$allEntries = $this->repository->enableCache( $allEntries = $this->repository->enableCache(
$this->repository->getBuilderForAllByUser($user->getId())->getQuery() $this->repository->getBuilderForAllByUser($user->getId())->select('COUNT(e.id)')->getQuery()
); );
return array( return [
'unreadEntries' => count($unreadEntries->getResult()), 'unreadEntries' => $unreadEntries->getSingleScalarResult(),
'starredEntries' => count($starredEntries->getResult()), 'starredEntries' => $starredEntries->getSingleScalarResult(),
'archivedEntries' => count($archivedEntries->getResult()), 'archivedEntries' => $archivedEntries->getSingleScalarResult(),
'allEntries' => count($allEntries->getResult()), 'allEntries' => $allEntries->getSingleScalarResult(),
); ];
} }
public function getName() public function getName()