Move query with inserting task subscribers to repository

[MAILPOET-4303]
This commit is contained in:
Jan Lysý
2023-03-06 17:05:08 +01:00
committed by Aschepikov
parent f80dfec1fb
commit 2ead4214cd
4 changed files with 28 additions and 29 deletions

View File

@@ -106,6 +106,25 @@ class ScheduledTaskSubscribersRepository extends Repository {
$this->checkCompleted($task);
}
public function createSubscribersForBounceWorker(ScheduledTaskEntity $scheduledTaskEntity): void {
$scheduledTaskSubscribersTable = $this->entityManager->getClassMetadata(ScheduledTaskSubscriberEntity::class)->getTableName();
$subscribersTable = $this->entityManager->getClassMetadata(SubscriberEntity::class)->getTableName();
$stmt = $this->entityManager->getConnection()->prepare("
INSERT IGNORE INTO " . $scheduledTaskSubscribersTable . "
(task_id, subscriber_id, processed)
SELECT :taskId AS task_id, s.`id` AS subscriber_id, :unprocessed AS processed
FROM " . $subscribersTable . " s
WHERE s.`deleted_at` IS NULL
AND s.`status` IN (:subscribed, :unconfirmed)
");
$stmt->bindValue('taskId', $scheduledTaskEntity->getId());
$stmt->bindValue('unprocessed', ScheduledTaskSubscriberEntity::STATUS_UNPROCESSED);
$stmt->bindValue('subscribed', SubscriberEntity::STATUS_SUBSCRIBED);
$stmt->bindValue('unconfirmed', SubscriberEntity::STATUS_UNCONFIRMED);
$stmt->executeQuery();
}
private function checkCompleted(ScheduledTaskEntity $task): void {
$count = $this->countBy(['task' => $task, 'processed' => ScheduledTaskSubscriberEntity::STATUS_UNPROCESSED]);
if ($count === 0) {