Skip to content

Commit

Permalink
Job status enumeration (#235)
Browse files Browse the repository at this point in the history
  • Loading branch information
vjik authored Jan 26, 2025
1 parent 5a13e3e commit 72885e8
Show file tree
Hide file tree
Showing 21 changed files with 48 additions and 179 deletions.
4 changes: 1 addition & 3 deletions src/Adapter/AdapterInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use BackedEnum;
use InvalidArgumentException;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\MessageInterface;

interface AdapterInterface
Expand All @@ -24,8 +24,6 @@ public function runExisting(callable $handlerCallback): void;
* @param int|string $id ID of a job message.
*
* @throws InvalidArgumentException When there is no such id in the adapter.
*
* @return JobStatus
*/
public function status(string|int $id): JobStatus;

Expand Down
6 changes: 3 additions & 3 deletions src/Adapter/SynchronousAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use BackedEnum;
use InvalidArgumentException;
use Yiisoft\Queue\ChannelNormalizer;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\MessageInterface;
use Yiisoft\Queue\QueueInterface;
use Yiisoft\Queue\Worker\WorkerInterface;
Expand Down Expand Up @@ -55,11 +55,11 @@ public function status(string|int $id): JobStatus
}

if ($id < $this->current) {
return JobStatus::done();
return JobStatus::DONE;
}

if (isset($this->messages[$id])) {
return JobStatus::waiting();
return JobStatus::WAITING;
}

throw new InvalidArgumentException('There is no message with the given ID.');
Expand Down
10 changes: 2 additions & 8 deletions src/Debug/QueueCollector.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

namespace Yiisoft\Queue\Debug;

use Yiisoft\Queue\JobStatus;
use Yiisoft\Yii\Debug\Collector\CollectorTrait;
use Yiisoft\Yii\Debug\Collector\SummaryCollectorInterface;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\Message\MessageInterface;
use Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface;
use Yiisoft\Queue\QueueInterface;
Expand Down Expand Up @@ -38,15 +38,9 @@ public function collectStatus(string $id, JobStatus $status): void
return;
}

$statusText = match (true) {
$status->isDone() => 'done',
$status->isReserved() => 'reserved',
$status->isWaiting() => 'waiting',
default => 'unknown'
};
$this->statuses[] = [
'id' => $id,
'status' => $statusText,
'status' => $status->key(),
];
}

Expand Down
2 changes: 1 addition & 1 deletion src/Debug/QueueDecorator.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
namespace Yiisoft\Queue\Debug;

use Yiisoft\Queue\Adapter\AdapterInterface;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\MessageInterface;
use Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface;
use Yiisoft\Queue\QueueInterface;
Expand Down
63 changes: 0 additions & 63 deletions src/Enum/JobStatus.php

This file was deleted.

21 changes: 21 additions & 0 deletions src/JobStatus.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

declare(strict_types=1);

namespace Yiisoft\Queue;

enum JobStatus: int
{
case WAITING = 1;
case RESERVED = 2;
case DONE = 3;

public function key(): string
{
return match ($this) {
self::WAITING => 'waiting',
self::RESERVED => 'reserved',
self::DONE => 'done',
};
}
}
1 change: 0 additions & 1 deletion src/Queue.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
use Psr\Log\LoggerInterface;
use Yiisoft\Queue\Adapter\AdapterInterface;
use Yiisoft\Queue\Cli\LoopInterface;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\Exception\AdapterConfiguration\AdapterNotConfiguredException;
use Yiisoft\Queue\Message\MessageInterface;
use Yiisoft\Queue\Middleware\Push\AdapterPushHandler;
Expand Down
1 change: 0 additions & 1 deletion src/QueueInterface.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@

use InvalidArgumentException;
use Yiisoft\Queue\Adapter\AdapterInterface;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\Message\MessageInterface;
use Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface;

Expand Down
4 changes: 2 additions & 2 deletions stubs/StubAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use BackedEnum;
use Yiisoft\Queue\Adapter\AdapterInterface;
use Yiisoft\Queue\ChannelNormalizer;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\MessageInterface;
use Yiisoft\Queue\QueueInterface;

Expand All @@ -30,7 +30,7 @@ public function runExisting(callable $handlerCallback): void

public function status(int|string $id): JobStatus
{
return JobStatus::done();
return JobStatus::DONE;
}

public function push(MessageInterface $message): MessageInterface
Expand Down
4 changes: 2 additions & 2 deletions stubs/StubQueue.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
namespace Yiisoft\Queue\Stubs;

use Yiisoft\Queue\Adapter\AdapterInterface;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\MessageInterface;
use Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface;
use Yiisoft\Queue\QueueInterface;
Expand Down Expand Up @@ -37,7 +37,7 @@ public function listen(): void

public function status(int|string $id): JobStatus
{
return JobStatus::done();
return JobStatus::DONE;
}

public function getAdapter(): ?AdapterInterface
Expand Down
2 changes: 1 addition & 1 deletion tests/App/DummyQueue.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use Exception;
use Yiisoft\Queue\Adapter\AdapterInterface;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\MessageInterface;
use Yiisoft\Queue\Middleware\Push\MiddlewarePushInterface;
use Yiisoft\Queue\QueueInterface;
Expand Down
2 changes: 1 addition & 1 deletion tests/App/FakeAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use BackedEnum;
use Yiisoft\Queue\Adapter\AdapterInterface;
use Yiisoft\Queue\ChannelNormalizer;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\MessageInterface;

final class FakeAdapter implements AdapterInterface
Expand Down
2 changes: 1 addition & 1 deletion tests/Benchmark/Support/VoidAdapter.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
use InvalidArgumentException;
use RuntimeException;
use Yiisoft\Queue\Adapter\AdapterInterface;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\IdEnvelope;
use Yiisoft\Queue\Message\MessageInterface;
use Yiisoft\Queue\Message\MessageSerializerInterface;
Expand Down
4 changes: 2 additions & 2 deletions tests/Unit/Adapter/SynchronousAdapterTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

use PHPUnit\Framework\Attributes\DataProvider;
use Yiisoft\Queue\Adapter\SynchronousAdapter;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\IdEnvelope;
use Yiisoft\Queue\Message\Message;
use Yiisoft\Queue\QueueInterface;
Expand Down Expand Up @@ -35,7 +35,7 @@ public function testNonIntegerId(): void
$id = $envelope->getMetadata()[IdEnvelope::MESSAGE_ID_KEY];

$wrongId = "$id ";
self::assertEquals(JobStatus::waiting(), $queue->status($wrongId));
self::assertSame(JobStatus::WAITING, $queue->status($wrongId));
}

public function testIdSetting(): void
Expand Down
4 changes: 2 additions & 2 deletions tests/Unit/Debug/QueueCollectorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

namespace Yiisoft\Queue\Tests\Unit\Debug;

use Yiisoft\Queue\JobStatus;
use Yiisoft\Yii\Debug\Collector\CollectorInterface;
use Yiisoft\Yii\Debug\Tests\Shared\AbstractCollectorTestCase;
use Yiisoft\Queue\Debug\QueueCollector;
use Yiisoft\Queue\Enum\JobStatus;
use Yiisoft\Queue\Message\Message;
use Yiisoft\Queue\Tests\App\DummyQueue;

Expand All @@ -26,7 +26,7 @@ protected function setUp(): void
*/
protected function collectTestData(CollectorInterface $collector): void
{
$collector->collectStatus('12345', JobStatus::done());
$collector->collectStatus('12345', JobStatus::DONE);
$collector->collectPush('chan1', $this->pushMessage);
$collector->collectPush('chan2', $this->pushMessage);
$collector->collectWorkerProcessing(
Expand Down
4 changes: 2 additions & 2 deletions tests/Unit/Debug/QueueDecoratorTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,10 @@
use Yiisoft\Queue\Adapter\AdapterInterface;
use Yiisoft\Queue\Debug\QueueCollector;
use Yiisoft\Queue\Debug\QueueDecorator;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\MessageInterface;
use Yiisoft\Queue\QueueInterface;
use Yiisoft\Queue\Tests\App\FakeAdapter;
use Yiisoft\Queue\Tests\Unit\Support\TestJobStatus;

class QueueDecoratorTest extends TestCase
{
Expand All @@ -34,7 +34,7 @@ public function testWithAdapter(): void
public function testStatus(): void
{
$queue = $this->createMock(QueueInterface::class);
$jobStatus = TestJobStatus::withStatus(1);
$jobStatus = JobStatus::WAITING;
$queue->expects($this->once())->method('status')->willReturn($jobStatus);
$collector = new QueueCollector();
$decorator = new QueueDecorator(
Expand Down
67 changes: 0 additions & 67 deletions tests/Unit/JobStatusTest.php

This file was deleted.

5 changes: 3 additions & 2 deletions tests/Unit/QueueTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

use Yiisoft\Queue\Cli\SignalLoop;
use Yiisoft\Queue\Exception\AdapterConfiguration\AdapterNotConfiguredException;
use Yiisoft\Queue\JobStatus;
use Yiisoft\Queue\Message\Message;
use Yiisoft\Queue\Tests\App\FakeAdapter;
use Yiisoft\Queue\Tests\TestCase;
Expand Down Expand Up @@ -96,11 +97,11 @@ public function testStatus(): void
$id = $envelope->getMetadata()[IdEnvelope::MESSAGE_ID_KEY];

$status = $queue->status($id);
self::assertTrue($status->isWaiting());
self::assertSame(JobStatus::WAITING, $status);

$queue->run();
$status = $queue->status($id);
self::assertTrue($status->isDone());
self::assertSame(JobStatus::DONE, $status);
}

public function testAdapterNotConfiguredException(): void
Expand Down
Loading

0 comments on commit 72885e8

Please sign in to comment.