Refactor restoring newsletters with running scheduled tasks
[MAILPOET-2898]
This commit is contained in:
committed by
Veljko V
parent
2db677f9de
commit
bd1361d24d
@ -173,26 +173,17 @@ class NewslettersRepository extends Repository {
|
|||||||
->setParameter('ids', $ids)
|
->setParameter('ids', $ids)
|
||||||
->getQuery()->execute();
|
->getQuery()->execute();
|
||||||
|
|
||||||
// Restore scheduled tasks
|
// Restore scheduled tasks and pause running ones
|
||||||
$scheduledTasksTable = $this->entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
|
$scheduledTasksTable = $this->entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName();
|
||||||
$sendingQueueTable = $this->entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName();
|
$sendingQueueTable = $this->entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName();
|
||||||
$this->entityManager->getConnection()->executeUpdate("
|
$this->entityManager->getConnection()->executeUpdate("
|
||||||
UPDATE $scheduledTasksTable t
|
UPDATE $scheduledTasksTable t
|
||||||
JOIN $sendingQueueTable q ON t.`id` = q.`task_id`
|
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)
|
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,
|
'ids' => $ids,
|
||||||
'status' => ScheduledTaskEntity::STATUS_PAUSED,
|
'pausedStatus' => ScheduledTaskEntity::STATUS_PAUSED,
|
||||||
], [
|
], [
|
||||||
'ids' => Connection::PARAM_INT_ARRAY,
|
'ids' => Connection::PARAM_INT_ARRAY,
|
||||||
]);
|
]);
|
||||||
|
@ -115,6 +115,7 @@ class NewsletterRepositoryTest extends \MailPoetTest {
|
|||||||
assert($scheduledTask instanceof ScheduledTaskEntity);
|
assert($scheduledTask instanceof ScheduledTaskEntity);
|
||||||
$this->entityManager->refresh($scheduledTask);
|
$this->entityManager->refresh($scheduledTask);
|
||||||
expect($scheduledTask->getDeletedAt())->null();
|
expect($scheduledTask->getDeletedAt())->null();
|
||||||
|
expect($scheduledTask->getStatus())->equals(ScheduledTaskEntity::STATUS_SCHEDULED);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testItBulkDeleteNewslettersAndChildren() {
|
public function testItBulkDeleteNewslettersAndChildren() {
|
||||||
|
Reference in New Issue
Block a user