*/ class BucketRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Bucket::class); } public function countOverflowBucketsForScenario(Scenario $scenario, ?UuidV7 $excludeId = null): int { $qb = $this->createQueryBuilder('b') ->select('COUNT(b.id)') ->andWhere('b.scenario = :scenario') ->andWhere('b.type = :overflow') ->setParameter('scenario', $scenario) ->setParameter('overflow', BucketType::OVERFLOW); if (null !== $excludeId) { $qb->andWhere('b.id != :excludeId') ->setParameter('excludeId', $excludeId, 'uuid'); } return (int) $qb->getQuery()->getSingleScalarResult(); } /** * @return array */ public function findByScenarioOrderedByPriority(Scenario $scenario): array { return $this->createQueryBuilder('b') ->where('b.scenario = :scenario') ->setParameter('scenario', $scenario) ->orderBy('b.priority', 'ASC') ->getQuery() ->execute(); } public function countBucketsWithPriorityForScenario( Scenario $scenario, int $priority, ?UuidV7 $excludeId = null, ): int { $qb = $this->createQueryBuilder('b') ->select('COUNT(b.id)') ->andWhere('b.scenario = :scenario') ->andWhere('b.priority = :priority') ->setParameter('scenario', $scenario) ->setParameter('priority', $priority); if (null !== $excludeId) { $qb->andWhere('b.id != :excludeId') ->setParameter('excludeId', $excludeId, 'uuid'); } return (int) $qb->getQuery()->getSingleScalarResult(); } }