Move getLatestTasks to ScheduledTasksRepository

- Move the method
- Adjust the usages
- Adjust and update tests

[MAILPOET-4355]
This commit is contained in:
Sam Najian
2022-08-12 15:00:30 +02:00
committed by Veljko V
parent bf1ddbedbc
commit 73d15c8c44
3 changed files with 126 additions and 2 deletions

View File

@@ -2,6 +2,7 @@
namespace MailPoet\Newsletter\Sending;
use MailPoet\Cron\Workers\Scheduler;
use MailPoet\Cron\Workers\SendingQueue\SendingQueue;
use MailPoet\Doctrine\Repository;
use MailPoet\Entities\NewsletterEntity;
@@ -154,6 +155,43 @@ class ScheduledTasksRepository extends Repository {
return $stats;
}
/**
* @param string|null $type
* @param array $statuses
* @param int $limit
* @return array<ScheduledTaskEntity>
*/
public function getLatestTasks(
$type = null,
$statuses = [
ScheduledTaskEntity::STATUS_COMPLETED,
ScheduledTaskEntity::STATUS_SCHEDULED,
ScheduledTaskEntity::VIRTUAL_STATUS_RUNNING,
],
$limit = Scheduler::TASK_BATCH_SIZE
) {
$tasksQuery = $this->doctrineRepository->createQueryBuilder('st')
->select('st')
->where('st.deletedAt IS NULL')
->where('st.status IN (:statuses)')
->setParameter('statuses', $statuses)
->setMaxResults($limit);
if ($type) {
$tasksQuery = $tasksQuery->andWhere('st.type = :type')
->setParameter('type', $type);
}
if (in_array(ScheduledTaskEntity::VIRTUAL_STATUS_RUNNING, $statuses)) {
$tasksQuery = $tasksQuery->orWhere('st.status IS NULL');
}
return $tasksQuery
->getQuery()
->getResult();
}
/**
* @return ScheduledTaskEntity[]
*/