mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-28 02:20:29 +00:00
TagRepository: refactor query builder for queries by userId
Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
This commit is contained in:
parent
bafb9744c8
commit
6708bf238d
1 changed files with 20 additions and 16 deletions
|
@ -3,6 +3,7 @@
|
|||
namespace Wallabag\CoreBundle\Repository;
|
||||
|
||||
use Doctrine\ORM\EntityRepository;
|
||||
use Doctrine\ORM\QueryBuilder;
|
||||
use Wallabag\CoreBundle\Entity\Tag;
|
||||
|
||||
class TagRepository extends EntityRepository
|
||||
|
@ -45,12 +46,8 @@ class TagRepository extends EntityRepository
|
|||
*/
|
||||
public function findAllTags($userId)
|
||||
{
|
||||
$ids = $this->createQueryBuilder('t')
|
||||
$ids = $this->getQueryBuilderByUser($userId)
|
||||
->select('t.id')
|
||||
->leftJoin('t.entries', 'e')
|
||||
->where('e.user = :userId')->setParameter('userId', $userId)
|
||||
->groupBy('t.id')
|
||||
->orderBy('t.slug')
|
||||
->getQuery()
|
||||
->getArrayResult();
|
||||
|
||||
|
@ -71,14 +68,9 @@ class TagRepository extends EntityRepository
|
|||
*/
|
||||
public function findAllFlatTagsWithNbEntries($userId)
|
||||
{
|
||||
return $this->createQueryBuilder('t')
|
||||
return $this->getQueryBuilderByUser($userId)
|
||||
->select('t.id, t.label, t.slug, count(e.id) as nbEntries')
|
||||
->distinct(true)
|
||||
->leftJoin('t.entries', 'e')
|
||||
->where('e.user = :userId')
|
||||
->groupBy('t.id')
|
||||
->orderBy('t.slug')
|
||||
->setParameter('userId', $userId)
|
||||
->getQuery()
|
||||
->getArrayResult();
|
||||
}
|
||||
|
@ -101,13 +93,9 @@ class TagRepository extends EntityRepository
|
|||
|
||||
public function findForArchivedArticlesByUser($userId)
|
||||
{
|
||||
$ids = $this->createQueryBuilder('t')
|
||||
$ids = $this->getQueryBuilderByUser($userId)
|
||||
->select('t.id')
|
||||
->leftJoin('t.entries', 'e')
|
||||
->where('e.user = :userId')->setParameter('userId', $userId)
|
||||
->andWhere('e.isArchived = true')
|
||||
->groupBy('t.id')
|
||||
->orderBy('t.slug')
|
||||
->getQuery()
|
||||
->getArrayResult();
|
||||
|
||||
|
@ -118,4 +106,20 @@ class TagRepository extends EntityRepository
|
|||
|
||||
return $tags;
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a sorted list of tags used by a user.
|
||||
*
|
||||
* @param int $userId
|
||||
*
|
||||
* @return QueryBuilder
|
||||
*/
|
||||
private function getQueryBuilderByUser($userId)
|
||||
{
|
||||
return $this->createQueryBuilder('t')
|
||||
->leftJoin('t.entries', 'e')
|
||||
->where('e.user = :userId')->setParameter('userId', $userId)
|
||||
->groupBy('t.id')
|
||||
->orderBy('t.slug');
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue