feat(mail) : MailMessageRepository — findMaxUidInFolder, findLastNByFolder, findAllUidsByFolder
This commit is contained in:
@@ -54,4 +54,49 @@ class MailMessageRepository extends ServiceEntityRepository
|
|||||||
->getSingleScalarResult()
|
->getSingleScalarResult()
|
||||||
;
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function findMaxUidInFolder(MailFolder $folder): int
|
||||||
|
{
|
||||||
|
$result = $this->createQueryBuilder('m')
|
||||||
|
->select('MAX(m.uid)')
|
||||||
|
->andWhere('m.folder = :folder')
|
||||||
|
->setParameter('folder', $folder)
|
||||||
|
->getQuery()
|
||||||
|
->getSingleScalarResult()
|
||||||
|
;
|
||||||
|
|
||||||
|
return (int) ($result ?? 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return list<MailMessage>
|
||||||
|
*/
|
||||||
|
public function findLastNByFolder(MailFolder $folder, int $limit): array
|
||||||
|
{
|
||||||
|
return $this->createQueryBuilder('m')
|
||||||
|
->andWhere('m.folder = :folder')
|
||||||
|
->setParameter('folder', $folder)
|
||||||
|
->orderBy('m.sentAt', 'DESC')
|
||||||
|
->addOrderBy('m.id', 'DESC')
|
||||||
|
->setMaxResults($limit)
|
||||||
|
->getQuery()
|
||||||
|
->getResult()
|
||||||
|
;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return list<int>
|
||||||
|
*/
|
||||||
|
public function findAllUidsByFolder(MailFolder $folder): array
|
||||||
|
{
|
||||||
|
$rows = $this->createQueryBuilder('m')
|
||||||
|
->select('m.uid')
|
||||||
|
->andWhere('m.folder = :folder')
|
||||||
|
->setParameter('folder', $folder)
|
||||||
|
->getQuery()
|
||||||
|
->getArrayResult()
|
||||||
|
;
|
||||||
|
|
||||||
|
return array_column($rows, 'uid');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user