From 972ce5fddfd54c40c26cffe1a55206a12358e709 Mon Sep 17 00:00:00 2001 From: Andrej Hudec Date: Mon, 10 Nov 2025 10:11:02 +0100 Subject: [PATCH 1/2] Select processable jobs always by priority --- src/Repository/JobRepository.php | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/Repository/JobRepository.php b/src/Repository/JobRepository.php index 6494c30..194a0be 100644 --- a/src/Repository/JobRepository.php +++ b/src/Repository/JobRepository.php @@ -17,12 +17,7 @@ final class JobRepository extends AbstractAnzuRepository { public function findProcessableJob(): ?Job { - $job = $this->findJobByStatus(JobStatus::AwaitingBatchProcess); - if ($job) { - return $job; - } - - return $this->findJobByStatus(JobStatus::Waiting); + return $this->findJobByStatuses(JobStatus::PROCESSABLE_STATUSES); } protected function getEntityClass(): string @@ -30,13 +25,18 @@ protected function getEntityClass(): string return Job::class; } - private function findJobByStatus(JobStatus $status): ?Job + /** + * @param JobStatus[] $statuses + */ + private function findJobByStatuses(array $statuses): ?Job { + $statusStrings = array_map(fn(JobStatus $status) => $status->toString(), $statuses); + return $this ->createQueryBuilder('job') - ->where('job.status = :status') + ->where('job.status IN (:statuses)') ->andWhere('job.scheduledAt <= :scheduledAt') - ->setParameter('status', $status->toString()) + ->setParameter('statuses', $statusStrings) ->setParameter('scheduledAt', new DateTimeImmutable(), Types::DATETIME_IMMUTABLE) ->orderBy('job.priority', Order::Descending->value) ->addOrderBy('job.scheduledAt', Order::Ascending->value) From e6700b41e645409f82d0604f61572c39af127914 Mon Sep 17 00:00:00 2001 From: Andrej Hudec Date: Mon, 10 Nov 2025 10:19:15 +0100 Subject: [PATCH 2/2] Fix CS --- src/Repository/JobRepository.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Repository/JobRepository.php b/src/Repository/JobRepository.php index 194a0be..da30fda 100644 --- a/src/Repository/JobRepository.php +++ b/src/Repository/JobRepository.php @@ -30,7 +30,7 @@ protected function getEntityClass(): string */ private function findJobByStatuses(array $statuses): ?Job { - $statusStrings = array_map(fn(JobStatus $status) => $status->toString(), $statuses); + $statusStrings = array_map(fn (JobStatus $status) => $status->toString(), $statuses); return $this ->createQueryBuilder('job')