diff --git a/src/Repository/MailMessageRepository.php b/src/Repository/MailMessageRepository.php index bc4bef9..2d9cf0e 100644 --- a/src/Repository/MailMessageRepository.php +++ b/src/Repository/MailMessageRepository.php @@ -54,4 +54,49 @@ class MailMessageRepository extends ServiceEntityRepository ->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 + */ + 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 + */ + 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'); + } }