Refactor CronWorkerScheduler to Doctrine

[MAILPOET-3726]
This commit is contained in:
Rostislav Wolny
2021-09-06 12:55:52 +02:00
committed by Veljko V
parent 493a6a6704
commit 1c4eb15f93
3 changed files with 40 additions and 17 deletions

View File

@@ -2,7 +2,9 @@
namespace MailPoet\Cron;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Models\ScheduledTask;
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
use MailPoet\WP\Functions as WPFunctions;
use MailPoetVendor\Carbon\Carbon;
@@ -10,24 +12,29 @@ class CronWorkerScheduler {
/** @var WPFunctions */
private $wp;
public function __construct(WPFunctions $wp) {
/** @var ScheduledTasksRepository */
private $scheduledTaskRepository;
public function __construct(
WPFunctions $wp,
ScheduledTasksRepository $scheduledTaskRepository
) {
$this->wp = $wp;
$this->scheduledTaskRepository = $scheduledTaskRepository;
}
public function schedule($taskType, $nextRunDate) {
$alreadyScheduled = ScheduledTask::where('type', $taskType)
->whereNull('deleted_at')
->where('status', ScheduledTask::STATUS_SCHEDULED)
->findMany();
public function schedule($taskType, $nextRunDate, $priority = ScheduledTaskEntity::PRIORITY_LOW): ScheduledTaskEntity {
$alreadyScheduled = $this->scheduledTaskRepository->findScheduledTask($taskType);
if ($alreadyScheduled) {
return false;
return $alreadyScheduled;
}
$task = ScheduledTask::create();
$task->type = $taskType;
$task->status = ScheduledTask::STATUS_SCHEDULED;
$task->priority = ScheduledTask::PRIORITY_LOW;
$task->scheduledAt = $nextRunDate;
$task->save();
$task = new ScheduledTaskEntity();
$task->setType($taskType);
$task->setStatus(ScheduledTaskEntity::STATUS_SCHEDULED);
$task->setPriority($priority);
$task->setScheduledAt($nextRunDate);
$this->scheduledTaskRepository->persist($task);
$this->scheduledTaskRepository->flush();
return $task;
}