From 0b0233b1ec8208be47c76856a4e317673927b21e Mon Sep 17 00:00:00 2001 From: =?utf8?q?Nicolas=20L=C5=93uillet?= Date: Thu, 1 Sep 2016 20:20:12 +0200 Subject: [PATCH] Enable cache for queries --- .../CoreBundle/Repository/EntryRepository.php | 17 ++++++++++++ .../CoreBundle/Twig/WallabagExtension.php | 27 +++++++++++++------ 2 files changed, 36 insertions(+), 8 deletions(-) diff --git a/src/Wallabag/CoreBundle/Repository/EntryRepository.php b/src/Wallabag/CoreBundle/Repository/EntryRepository.php index e9351d85..86bce545 100644 --- a/src/Wallabag/CoreBundle/Repository/EntryRepository.php +++ b/src/Wallabag/CoreBundle/Repository/EntryRepository.php @@ -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; + } } diff --git a/src/Wallabag/CoreBundle/Twig/WallabagExtension.php b/src/Wallabag/CoreBundle/Twig/WallabagExtension.php index 6e46c701..5c475d61 100644 --- a/src/Wallabag/CoreBundle/Twig/WallabagExtension.php +++ b/src/Wallabag/CoreBundle/Twig/WallabagExtension.php @@ -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()), ); } -- 2.41.0