From f245863b78dc9e763a1a11aad6f2c0f35f34027a Mon Sep 17 00:00:00 2001 From: matthieu Date: Tue, 19 May 2026 23:35:30 +0200 Subject: [PATCH] =?UTF-8?q?feat(mail)=20:=20MailMessageRepository=20?= =?UTF-8?q?=E2=80=94=20findMaxUidInFolder,=20findLastNByFolder,=20findAllU?= =?UTF-8?q?idsByFolder?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Repository/MailMessageRepository.php | 45 ++++++++++++++++++++++++ 1 file changed, 45 insertions(+) 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'); + } }