Prefetch options & segments for listing
[MAILPOET-2645]
This commit is contained in:
committed by
Jack Kitterhing
parent
f3525eb293
commit
2cc1caba07
@ -92,6 +92,8 @@ class NewslettersResponseBuilder {
|
||||
public function buildForListing(array $newsletters): array {
|
||||
$statistics = $this->newslettersStatsRepository->getBatchStatistics($newsletters);
|
||||
$latestQueues = $this->getBatchLatestQueuesWithTasks($newsletters);
|
||||
$this->prefetchOptions($newsletters);
|
||||
$this->prefetchSegments($newsletters);
|
||||
|
||||
$data = [];
|
||||
foreach ($newsletters as $newsletter) {
|
||||
@ -229,4 +231,28 @@ class NewslettersResponseBuilder {
|
||||
}
|
||||
return $latestQueues;
|
||||
}
|
||||
|
||||
private function prefetchOptions(array $newsletters) {
|
||||
$this->entityManager->createQueryBuilder()
|
||||
->select('PARTIAL n.{id}, o, opf')
|
||||
->from(NewsletterEntity::class, 'n')
|
||||
->join('n.options', 'o')
|
||||
->join('o.optionField', 'opf')
|
||||
->where('n.id IN (:newsletters)')
|
||||
->setParameter('newsletters', $newsletters)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
}
|
||||
|
||||
private function prefetchSegments(array $newsletters) {
|
||||
$this->entityManager->createQueryBuilder()
|
||||
->select('PARTIAL n.{id}, ns, s')
|
||||
->from(NewsletterEntity::class, 'n')
|
||||
->join('n.newsletterSegments', 'ns')
|
||||
->join('ns.segment', 's')
|
||||
->where('n.id IN (:newsletters)')
|
||||
->setParameter('newsletters', $newsletters)
|
||||
->getQuery()
|
||||
->getResult();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user