]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Instead of selecting the whole data, just count it
authorJeremy Benoist <jeremy.benoist@gmail.com>
Sat, 3 Sep 2016 16:11:07 +0000 (18:11 +0200)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Sat, 3 Sep 2016 16:11:07 +0000 (18:11 +0200)
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)

src/Wallabag/CoreBundle/Controller/DeveloperController.php
src/Wallabag/CoreBundle/Twig/WallabagExtension.php

index 1ea220e52edc164d5321aa0207c30875f30fb181..63386db0c31147b7d3c639cf2c3a74a161e7ad94 100644 (file)
@@ -49,7 +49,7 @@ class DeveloperController extends Controller
 
             $this->get('session')->getFlashBag()->add(
                 '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', [
@@ -81,7 +81,7 @@ class DeveloperController extends Controller
 
         $this->get('session')->getFlashBag()->add(
             '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'));
index 5c475d614b5712e313f4b0a60d00717631c1c01d..93640dc68811a896b5b2d776c0443d3a327f5580 100644 (file)
@@ -33,31 +33,31 @@ class WallabagExtension extends \Twig_Extension implements \Twig_Extension_Globa
         $user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
 
         if (null === $user || !is_object($user)) {
-            return array();
+            return [];
         }
 
         $unreadEntries = $this->repository->enableCache(
-            $this->repository->getBuilderForUnreadByUser($user->getId())->getQuery()
+            $this->repository->getBuilderForUnreadByUser($user->getId())->select('COUNT(e.id)')->getQuery()
         );
 
         $starredEntries = $this->repository->enableCache(
-            $this->repository->getBuilderForStarredByUser($user->getId())->getQuery()
+            $this->repository->getBuilderForStarredByUser($user->getId())->select('COUNT(e.id)')->getQuery()
         );
 
         $archivedEntries = $this->repository->enableCache(
-            $this->repository->getBuilderForArchiveByUser($user->getId())->getQuery()
+            $this->repository->getBuilderForArchiveByUser($user->getId())->select('COUNT(e.id)')->getQuery()
         );
 
         $allEntries = $this->repository->enableCache(
-            $this->repository->getBuilderForAllByUser($user->getId())->getQuery()
+            $this->repository->getBuilderForAllByUser($user->getId())->select('COUNT(e.id)')->getQuery()
         );
 
-        return array(
-            'unreadEntries' => count($unreadEntries->getResult()),
-            'starredEntries' => count($starredEntries->getResult()),
-            'archivedEntries' => count($archivedEntries->getResult()),
-            'allEntries' => count($allEntries->getResult()),
-        );
+        return [
+            'unreadEntries' => $unreadEntries->getSingleScalarResult(),
+            'starredEntries' => $starredEntries->getSingleScalarResult(),
+            'archivedEntries' => $archivedEntries->getSingleScalarResult(),
+            'allEntries' => $allEntries->getSingleScalarResult(),
+        ];
     }
 
     public function getName()