]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Enable cache for queries
authorNicolas Lœuillet <nicolas@loeuillet.org>
Thu, 1 Sep 2016 18:20:12 +0000 (20:20 +0200)
committerNicolas Lœuillet <nicolas@loeuillet.org>
Thu, 1 Sep 2016 18:20:12 +0000 (20:20 +0200)
src/Wallabag/CoreBundle/Repository/EntryRepository.php
src/Wallabag/CoreBundle/Twig/WallabagExtension.php

index e9351d85ef439451584a7b2315c5a1fbc56854b9..86bce545e07ed7b14cfb037a2f23992ab4971274 100644 (file)
@@ -3,6 +3,7 @@
 namespace Wallabag\CoreBundle\Repository;
 
 use Doctrine\ORM\EntityRepository;
+use Doctrine\ORM\Query;
 use Pagerfanta\Adapter\DoctrineORMAdapter;
 use Pagerfanta\Pagerfanta;
 use Wallabag\CoreBundle\Entity\Tag;
@@ -279,4 +280,20 @@ class EntryRepository extends EntityRepository
 
         return $qb->getQuery()->getSingleScalarResult();
     }
+
+    /**
+     * Enable cache for a query
+     *
+     * @param Query $query
+     *
+     * @return Query
+     */
+    public function enableCache(Query $query)
+    {
+        $query->useQueryCache(true);
+        $query->useResultCache(true);
+        $query->setResultCacheLifetime(5);
+
+        return $query;
+    }
 }
index 6e46c7018cab9df687aa7e9be754913e74bac817..5c475d614b5712e313f4b0a60d00717631c1c01d 100644 (file)
@@ -36,16 +36,27 @@ class WallabagExtension extends \Twig_Extension implements \Twig_Extension_Globa
             return array();
         }
 
-        $unreadEntries = $this->repository->getBuilderForUnreadByUser($user->getId())->getQuery()->getResult();
-        $starredEntries = $this->repository->getBuilderForStarredByUser($user->getId())->getQuery()->getResult();
-        $archivedEntries = $this->repository->getBuilderForArchiveByUser($user->getId())->getQuery()->getResult();
-        $allEntries = $this->repository->getBuilderForAllByUser($user->getId())->getQuery()->getResult();
+        $unreadEntries = $this->repository->enableCache(
+            $this->repository->getBuilderForUnreadByUser($user->getId())->getQuery()
+        );
+
+        $starredEntries = $this->repository->enableCache(
+            $this->repository->getBuilderForStarredByUser($user->getId())->getQuery()
+        );
+
+        $archivedEntries = $this->repository->enableCache(
+            $this->repository->getBuilderForArchiveByUser($user->getId())->getQuery()
+        );
+
+        $allEntries = $this->repository->enableCache(
+            $this->repository->getBuilderForAllByUser($user->getId())->getQuery()
+        );
 
         return array(
-            'unreadEntries' => count($unreadEntries),
-            'starredEntries' => count($starredEntries),
-            'archivedEntries' => count($archivedEntries),
-            'allEntries' => count($allEntries),
+            'unreadEntries' => count($unreadEntries->getResult()),
+            'starredEntries' => count($starredEntries->getResult()),
+            'archivedEntries' => count($archivedEntries->getResult()),
+            'allEntries' => count($allEntries->getResult()),
         );
     }