Refactor restoring newsletters with running scheduled tasks

[MAILPOET-2898]
This commit is contained in:
Rostislav Wolny
2020-06-17 10:35:33 +02:00
committed by Veljko V
parent 2db677f9de
commit bd1361d24d
2 changed files with 4 additions and 12 deletions

View File

@ -173,26 +173,17 @@ class NewslettersRepository extends Repository {
->setParameter('ids', $ids)
->getQuery()->execute();
// Restore scheduled tasks
// Restore scheduled tasks and pause running ones
$scheduledTasksTable = $this->entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
$sendingQueueTable = $this->entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName();
$this->entityManager->getConnection()->executeUpdate("
UPDATE $scheduledTasksTable t
JOIN $sendingQueueTable q ON t.`id` = q.`task_id`
SET t.`deleted_at` = null
SET t.`deleted_at` = null, t.`status` = IFNULL(t.status, :pausedStatus)
WHERE q.`newsletter_id` IN (:ids)
", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]);
// Pause restored running scheduled tasks
$this->entityManager->getConnection()->executeUpdate("
UPDATE $scheduledTasksTable t
JOIN $sendingQueueTable q ON t.`id` = q.`task_id`
SET t.`status` = :status
WHERE q.`newsletter_id` IN (:ids)
AND t.`status` IS NULL
", [
'ids' => $ids,
'status' => ScheduledTaskEntity::STATUS_PAUSED,
'pausedStatus' => ScheduledTaskEntity::STATUS_PAUSED,
], [
'ids' => Connection::PARAM_INT_ARRAY,
]);

View File

@ -115,6 +115,7 @@ class NewsletterRepositoryTest extends \MailPoetTest {
assert($scheduledTask instanceof ScheduledTaskEntity);
$this->entityManager->refresh($scheduledTask);
expect($scheduledTask->getDeletedAt())->null();
expect($scheduledTask->getStatus())->equals(ScheduledTaskEntity::STATUS_SCHEDULED);
}
public function testItBulkDeleteNewslettersAndChildren() {