feat(mail) : MailMessage entity + repository

This commit is contained in:
2026-05-19 23:16:52 +02:00
parent 0c80159d7e
commit 0c597bc653
2 changed files with 295 additions and 0 deletions
+57
View File
@@ -0,0 +1,57 @@
<?php
declare(strict_types=1);
namespace App\Repository;
use App\Entity\MailFolder;
use App\Entity\MailMessage;
use Doctrine\Bundle\DoctrineBundle\Repository\ServiceEntityRepository;
use Doctrine\Persistence\ManagerRegistry;
class MailMessageRepository extends ServiceEntityRepository
{
public function __construct(ManagerRegistry $registry)
{
parent::__construct($registry, MailMessage::class);
}
public function findByMessageId(string $messageId): ?MailMessage
{
return $this->findOneBy(['messageId' => $messageId]);
}
public function findByFolderAndUid(MailFolder $folder, int $uid): ?MailMessage
{
return $this->findOneBy(['folder' => $folder, 'uid' => $uid]);
}
/**
* @return list<MailMessage>
*/
public function findByFolderPaginated(MailFolder $folder, int $limit, int $offset): array
{
return $this->createQueryBuilder('m')
->andWhere('m.folder = :folder')
->setParameter('folder', $folder)
->orderBy('m.sentAt', 'DESC')
->addOrderBy('m.id', 'DESC')
->setMaxResults($limit)
->setFirstResult($offset)
->getQuery()
->getResult()
;
}
public function countUnreadByFolder(MailFolder $folder): int
{
return (int) $this->createQueryBuilder('m')
->select('COUNT(m.id)')
->andWhere('m.folder = :folder')
->andWhere('m.isRead = false')
->setParameter('folder', $folder)
->getQuery()
->getSingleScalarResult()
;
}
}