Skip to content

Commit e9bfd91

Browse files
introduce Priority enum (#447)
Co-authored-by: Mark Scherer <[email protected]>
1 parent cc8193d commit e9bfd91

File tree

3 files changed

+38
-6
lines changed

3 files changed

+38
-6
lines changed

src/Config/JobConfig.php

Lines changed: 16 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
/**
@@ -132,6 +133,10 @@ public function fromArray(array $data, ?string $type = null) {
132133
$field = $this->field($field, $type);
133134
}
134135

136+
if ($field === 'priority' && $value instanceof Priority) {
137+
$value = $value->value;
138+
}
139+
135140
$this->$field = $value;
136141
}
137142

@@ -219,22 +224,28 @@ public function field(string $name, string $type): string {
219224
}
220225

221226
/**
222-
* @param int|null $priority
227+
* @param \Queue\Model\Enum\Priority|int|null $priority
223228
*
224229
* @return $this
225230
*/
226-
public function setPriority(?int $priority) {
231+
public function setPriority(Priority|int|null $priority) {
232+
if ($priority instanceof Priority) {
233+
$priority = $priority->value;
234+
}
227235
$this->priority = $priority;
228236

229237
return $this;
230238
}
231239

232240
/**
233-
* @param int $priority
241+
* @param \Queue\Model\Enum\Priority|int $priority
234242
*
235243
* @return $this
236244
*/
237-
public function setPriorityOrFail(int $priority) {
245+
public function setPriorityOrFail(Priority|int $priority) {
246+
if ($priority instanceof Priority) {
247+
$priority = $priority->value;
248+
}
238249
$this->priority = $priority;
239250

240251
return $this;
@@ -243,7 +254,7 @@ public function setPriorityOrFail(int $priority) {
243254
/**
244255
* @return int|null
245256
*/
246-
public function getPriority(): ?int {
257+
public function getPriority(): int|null {
247258
return $this->priority;
248259
}
249260

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]));
698699

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

0 commit comments

Comments
 (0)