feat(mail) : MailMessageRepository — findMaxUidInFolder, findLastNByFolder, findAllUidsByFolder

This commit is contained in:
2026-05-19 23:35:30 +02:00
parent b546f528df
commit f245863b78

View File

@@ -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<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');
}
}