Skip to content

Commit a01eab9

Browse files
committed
Add UnknownTaskDetails, TaskType::Unknown, TaskStatus::Unknown
1 parent 4b361f1 commit a01eab9

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

src/Contracts/Task.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
use Meilisearch\Contracts\TaskDetails\SettingsUpdateDetails;
1616
use Meilisearch\Contracts\TaskDetails\TaskCancelationDetails;
1717
use Meilisearch\Contracts\TaskDetails\TaskDeletionDetails;
18+
use Meilisearch\Contracts\TaskDetails\UnknownTaskDetails;
1819
use Meilisearch\Exceptions\LogicException;
1920

2021
final class Task
@@ -150,12 +151,13 @@ public function wait(int $timeoutInMs = 5000, int $intervalInMs = 50): Task
150151
public static function fromArray(array $data, ?\Closure $await = null): Task
151152
{
152153
$details = $data['details'] ?? null;
154+
$type = TaskType::tryFrom($data['type']) ?? TaskType::Unknown;
153155

154156
return new self(
155157
$data['taskUid'] ?? $data['uid'],
156158
$data['indexUid'] ?? null,
157-
TaskStatus::from($data['status']),
158-
$type = TaskType::from($data['type']),
159+
TaskStatus::tryFrom($data['status']) ?? TaskStatus::Unknown,
160+
$type,
159161
new \DateTimeImmutable($data['enqueuedAt']),
160162
\array_key_exists('startedAt', $data) && null !== $data['startedAt'] ? new \DateTimeImmutable($data['startedAt']) : null,
161163
\array_key_exists('finishedAt', $data) && null !== $data['finishedAt'] ? new \DateTimeImmutable($data['finishedAt']) : null,
@@ -177,6 +179,7 @@ public static function fromArray(array $data, ?\Closure $await = null): Task
177179
// It’s intentional that SnapshotCreation tasks don’t have a details object
178180
// (no SnapshotCreationDetails exists and tests don’t exercise any details)
179181
TaskType::SnapshotCreation => null,
182+
TaskType::Unknown => UnknownTaskDetails::fromArray($details),
180183
},
181184
\array_key_exists('error', $data) && null !== $data['error'] ? TaskError::fromArray($data['error']) : null,
182185
$await,
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Meilisearch\Contracts\TaskDetails;
6+
7+
use Meilisearch\Contracts\TaskDetails;
8+
9+
/**
10+
* @implements TaskDetails<array{}>
11+
*/
12+
final class UnknownTaskDetails implements TaskDetails
13+
{
14+
/**
15+
* @param array<mixed> $data
16+
*/
17+
public function __construct(
18+
public readonly array $data,
19+
) {
20+
}
21+
22+
public static function fromArray(array $data): self
23+
{
24+
return new self($data);
25+
}
26+
}

src/Contracts/TaskStatus.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,5 @@ enum TaskStatus: string
1111
case Failed = 'failed';
1212
case Succeeded = 'succeeded';
1313
case Processing = 'processing';
14+
case Unknown = 'unknown';
1415
}

src/Contracts/TaskType.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,4 +18,5 @@ enum TaskType: string
1818
case TaskCancelation = 'taskCancelation';
1919
case TaskDeletion = 'taskDeletion';
2020
case SnapshotCreation = 'snapshotCreation';
21+
case Unknown = 'unknown';
2122
}

0 commit comments

Comments
 (0)