Skip to content

Commit 0b495d5

Browse files
committed
introduce Priority enum
1 parent 1bfd32c commit 0b495d5

File tree

3 files changed

+34
-6
lines changed

3 files changed

+34
-6
lines changed

src/Config/JobConfig.php

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace Queue\Config;
44

55
use InvalidArgumentException;
6+
use Queue\Model\Enum\Priority;
67
use RuntimeException;
78

89
/**
@@ -219,22 +220,28 @@ public function field(string $name, string $type): string {
219220
}
220221

221222
/**
222-
* @param int|null $priority
223+
* @param \Queue\Model\Enum\Priority|int|null $priority
223224
*
224225
* @return $this
225226
*/
226-
public function setPriority(?int $priority) {
227+
public function setPriority(Priority|int|null $priority) {
228+
if ($priority instanceof Priority) {
229+
$priority = $priority->value;
230+
}
227231
$this->priority = $priority;
228232

229233
return $this;
230234
}
231235

232236
/**
233-
* @param int $priority
237+
* @param \Queue\Model\Enum\Priority|int $priority
234238
*
235239
* @return $this
236240
*/
237-
public function setPriorityOrFail(int $priority) {
241+
public function setPriorityOrFail(Priority|int $priority) {
242+
if ($priority instanceof Priority) {
243+
$priority = $priority->value;
244+
}
238245
$this->priority = $priority;
239246

240247
return $this;
@@ -243,7 +250,7 @@ public function setPriorityOrFail(int $priority) {
243250
/**
244251
* @return int|null
245252
*/
246-
public function getPriority(): ?int {
253+
public function getPriority(): int|null {
247254
return $this->priority;
248255
}
249256

src/Model/Enum/Priority.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?php
2+
declare(strict_types=1);
3+
4+
namespace Queue\Model\Enum;
5+
6+
/**
7+
* Priority levels for queued jobs. 1 is the highest priority, 10 is the lowest.
8+
*/
9+
enum Priority: int {
10+
case Critical = 1;
11+
case Urgent = 2;
12+
case High = 3;
13+
case MediumHigh = 4;
14+
case Medium = 5;
15+
case MediumLow = 6;
16+
case Low = 7;
17+
case VeryLow = 8;
18+
case Deferred = 9;
19+
case Idle = 10;
20+
}

tests/TestCase/Model/Table/QueuedJobsTableTest.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Cake\I18n\DateTime;
1515
use Cake\ORM\TableRegistry;
1616
use Cake\TestSuite\TestCase;
17+
use Queue\Model\Enum\Priority;
1718
use Queue\Model\Table\QueuedJobsTable;
1819
use Queue\Queue\Task\ExampleTask;
1920
use TestApp\Dto\MyTaskDto;
@@ -694,7 +695,7 @@ public function testPriority() {
694695
$this->assertTrue((bool)$this->QueuedJobs->createJob('Foo', $data));
695696

696697
$data = ['key' => 'k2'];
697-
$this->assertTrue((bool)$this->QueuedJobs->createJob('Foo', $data, ['priority' => 1]));
698+
$this->assertTrue((bool)$this->QueuedJobs->createJob('Foo', $data, ['priority' => Priority::Critical->value]));
698699

699700
$data = ['key' => 'k3'];
700701
$this->assertTrue((bool)$this->QueuedJobs->createJob('Foo', $data, ['priority' => 6]));

0 commit comments

Comments
 (0)