Skip to content

Commit 00a7b98

Browse files
committed
Replace task array return with Task object
1 parent ebb8803 commit 00a7b98

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+356
-365
lines changed

.github/workflows/tests.yml

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -132,20 +132,6 @@ jobs:
132132
name: 'phpunit-${{ matrix.php-version }}-${{ matrix.http-client }}-coverage'
133133
path: 'coverage*.xml'
134134

135-
test_php_7_guzzle_6:
136-
# Will not run if the event is a PR to bump-meilisearch-v* (so a pre-release PR)
137-
# Will still run for each push to bump-meilisearch-v*
138-
if: github.event_name != 'pull_request' || !startsWith(github.base_ref, 'bump-meilisearch-v')
139-
runs-on: ubuntu-latest
140-
services:
141-
meilisearch:
142-
image: getmeili/meilisearch:latest
143-
ports:
144-
- 7700:7700
145-
env:
146-
MEILI_MASTER_KEY: masterKey
147-
MEILI_NO_ANALYTICS: true
148-
149135
upload-coverage:
150136
name: Upload coverage to Codecov
151137
runs-on: ubuntu-latest

.php-cs-fixer.dist.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
'void_return' => true,
1616
'native_function_invocation' => ['include' => ['@compiler_optimized'], 'scope' => 'namespaced'],
1717
'php_unit_test_case_static_method_calls' => ['call_type' => 'self'],
18-
'php_unit_strict' => true,
18+
'php_unit_strict' => false,
1919
'trailing_comma_in_multiline' => ['after_heredoc' => true, 'elements' => ['array_destructuring', 'arrays', 'match', 'parameters']],
2020
])
2121
->setRiskyAllowed(true)

src/Contracts/Task.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,12 @@ final class Task implements \ArrayAccess
99
/**
1010
* @param non-negative-int $taskUid
1111
* @param non-empty-string|null $indexUid
12+
* @param array{
13+
* message: non-empty-string,
14+
* code: non-empty-string,
15+
* type: non-empty-string,
16+
* link: non-empty-string
17+
* }|null $error
1218
* @param array<mixed> $data Raw data
1319
*/
1420
public function __construct(
@@ -89,6 +95,14 @@ public function getDetails(): ?array
8995
return $this->details;
9096
}
9197

98+
/**
99+
* @return array{
100+
* message: non-empty-string,
101+
* code: non-empty-string,
102+
* type: non-empty-string,
103+
* link: non-empty-string
104+
* }|null
105+
*/
92106
public function getError(): ?array
93107
{
94108
return $this->error;

src/Endpoints/Delegates/HandlesDocuments.php

Lines changed: 44 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Meilisearch\Contracts\DocumentsQuery;
88
use Meilisearch\Contracts\DocumentsResults;
9+
use MeiliSearch\Contracts\Task;
910
use Meilisearch\Exceptions\ApiException;
1011
use Meilisearch\Exceptions\InvalidResponseBodyException;
1112

@@ -36,26 +37,29 @@ public function getDocuments(?DocumentsQuery $options = null): DocumentsResults
3637
}
3738
}
3839

39-
public function addDocuments(array $documents, ?string $primaryKey = null): array
40+
public function addDocuments(array $documents, ?string $primaryKey = null): Task
4041
{
41-
return $this->http->post(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey]);
42+
return Task::fromArray($this->http->post(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey]));
4243
}
4344

44-
public function addDocumentsJson(string $documents, ?string $primaryKey = null): array
45+
public function addDocumentsJson(string $documents, ?string $primaryKey = null): Task
4546
{
46-
return $this->http->post(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey], 'application/json');
47+
return Task::fromArray($this->http->post(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey], 'application/json'));
4748
}
4849

49-
public function addDocumentsCsv(string $documents, ?string $primaryKey = null, ?string $delimiter = null): array
50+
public function addDocumentsCsv(string $documents, ?string $primaryKey = null, ?string $delimiter = null): Task
5051
{
51-
return $this->http->post(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey, 'csvDelimiter' => $delimiter], 'text/csv');
52+
return Task::fromArray($this->http->post(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey, 'csvDelimiter' => $delimiter], 'text/csv'));
5253
}
5354

54-
public function addDocumentsNdjson(string $documents, ?string $primaryKey = null): array
55+
public function addDocumentsNdjson(string $documents, ?string $primaryKey = null): Task
5556
{
56-
return $this->http->post(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey], 'application/x-ndjson');
57+
return Task::fromArray($this->http->post(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey], 'application/x-ndjson'));
5758
}
5859

60+
/**
61+
* @return list<Task>
62+
*/
5963
public function addDocumentsInBatches(array $documents, ?int $batchSize = 1000, ?string $primaryKey = null): array
6064
{
6165
$promises = [];
@@ -67,6 +71,9 @@ public function addDocumentsInBatches(array $documents, ?int $batchSize = 1000,
6771
return $promises;
6872
}
6973

74+
/**
75+
* @return list<Task>
76+
*/
7077
public function addDocumentsCsvInBatches(string $documents, ?int $batchSize = 1000, ?string $primaryKey = null, ?string $delimiter = null): array
7178
{
7279
$promises = [];
@@ -78,6 +85,9 @@ public function addDocumentsCsvInBatches(string $documents, ?int $batchSize = 10
7885
return $promises;
7986
}
8087

88+
/**
89+
* @return list<Task>
90+
*/
8191
public function addDocumentsNdjsonInBatches(string $documents, ?int $batchSize = 1000, ?string $primaryKey = null): array
8292
{
8393
$promises = [];
@@ -89,26 +99,29 @@ public function addDocumentsNdjsonInBatches(string $documents, ?int $batchSize =
8999
return $promises;
90100
}
91101

92-
public function updateDocuments(array $documents, ?string $primaryKey = null): array
102+
public function updateDocuments(array $documents, ?string $primaryKey = null): Task
93103
{
94-
return $this->http->put(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey]);
104+
return Task::fromArray($this->http->put(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey]));
95105
}
96106

97-
public function updateDocumentsJson(string $documents, ?string $primaryKey = null): array
107+
public function updateDocumentsJson(string $documents, ?string $primaryKey = null): Task
98108
{
99-
return $this->http->put(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey], 'application/json');
109+
return Task::fromArray($this->http->put(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey], 'application/json'));
100110
}
101111

102-
public function updateDocumentsCsv(string $documents, ?string $primaryKey = null, ?string $delimiter = null): array
112+
public function updateDocumentsCsv(string $documents, ?string $primaryKey = null, ?string $delimiter = null): Task
103113
{
104-
return $this->http->put(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey, 'csvDelimiter' => $delimiter], 'text/csv');
114+
return Task::fromArray($this->http->put(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey, 'csvDelimiter' => $delimiter], 'text/csv'));
105115
}
106116

107-
public function updateDocumentsNdjson(string $documents, ?string $primaryKey = null): array
117+
public function updateDocumentsNdjson(string $documents, ?string $primaryKey = null): Task
108118
{
109-
return $this->http->put(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey], 'application/x-ndjson');
119+
return Task::fromArray($this->http->put(self::PATH.'/'.$this->uid.'/documents', $documents, ['primaryKey' => $primaryKey], 'application/x-ndjson'));
110120
}
111121

122+
/**
123+
* @return list<Task>
124+
*/
112125
public function updateDocumentsInBatches(array $documents, ?int $batchSize = 1000, ?string $primaryKey = null): array
113126
{
114127
$promises = [];
@@ -120,6 +133,9 @@ public function updateDocumentsInBatches(array $documents, ?int $batchSize = 100
120133
return $promises;
121134
}
122135

136+
/**
137+
* @return list<Task>
138+
*/
123139
public function updateDocumentsCsvInBatches(string $documents, ?int $batchSize = 1000, ?string $primaryKey = null, ?string $delimiter = null): array
124140
{
125141
$promises = [];
@@ -131,6 +147,9 @@ public function updateDocumentsCsvInBatches(string $documents, ?int $batchSize =
131147
return $promises;
132148
}
133149

150+
/**
151+
* @return list<Task>
152+
*/
134153
public function updateDocumentsNdjsonInBatches(string $documents, ?int $batchSize = 1000, ?string $primaryKey = null): array
135154
{
136155
$promises = [];
@@ -152,31 +171,31 @@ public function updateDocumentsNdjsonInBatches(string $documents, ?int $batchSiz
152171
* @param non-empty-string $function
153172
* @param array{filter?: non-empty-string|list<non-empty-string>|null, context?: array<non-empty-string, mixed>} $options
154173
*/
155-
public function updateDocumentsByFunction(string $function, array $options = []): array
174+
public function updateDocumentsByFunction(string $function, array $options = []): Task
156175
{
157-
return $this->http->post(self::PATH.'/'.$this->uid.'/documents/edit', array_merge(['function' => $function], $options));
176+
return Task::fromArray($this->http->post(self::PATH.'/'.$this->uid.'/documents/edit', array_merge(['function' => $function], $options)));
158177
}
159178

160-
public function deleteAllDocuments(): array
179+
public function deleteAllDocuments(): Task
161180
{
162-
return $this->http->delete(self::PATH.'/'.$this->uid.'/documents');
181+
return Task::fromArray($this->http->delete(self::PATH.'/'.$this->uid.'/documents'));
163182
}
164183

165-
public function deleteDocument(string|int $documentId): array
184+
public function deleteDocument(string|int $documentId): Task
166185
{
167-
return $this->http->delete(self::PATH.'/'.$this->uid.'/documents/'.$documentId);
186+
return Task::fromArray($this->http->delete(self::PATH.'/'.$this->uid.'/documents/'.$documentId));
168187
}
169188

170-
public function deleteDocuments(array $options): array
189+
public function deleteDocuments(array $options): Task
171190
{
172191
try {
173192
if (\array_key_exists('filter', $options) && $options['filter']) {
174-
return $this->http->post(self::PATH.'/'.$this->uid.'/documents/delete', $options);
193+
return Task::fromArray($this->http->post(self::PATH.'/'.$this->uid.'/documents/delete', $options));
175194
}
176195

177196
// backwards compatibility:
178197
// expect to be a array to send alongside as $documents_ids.
179-
return $this->http->post(self::PATH.'/'.$this->uid.'/documents/delete-batch', $options);
198+
return Task::fromArray($this->http->post(self::PATH.'/'.$this->uid.'/documents/delete-batch', $options));
180199
} catch (InvalidResponseBodyException $e) {
181200
throw ApiException::rethrowWithHint($e, __FUNCTION__);
182201
}

src/Endpoints/Delegates/HandlesDumps.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,14 @@
44

55
namespace Meilisearch\Endpoints\Delegates;
66

7+
use MeiliSearch\Contracts\Task;
78
use Meilisearch\Endpoints\Dumps;
89

910
trait HandlesDumps
1011
{
1112
protected Dumps $dumps;
1213

13-
public function createDump(): array
14+
public function createDump(): Task
1415
{
1516
return $this->dumps->create();
1617
}

src/Endpoints/Delegates/HandlesIndex.php

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
use Meilisearch\Contracts\IndexesQuery;
88
use Meilisearch\Contracts\IndexesResults;
9+
use MeiliSearch\Contracts\Task;
910
use Meilisearch\Endpoints\Indexes;
1011

1112
trait HandlesIndex
@@ -44,23 +45,23 @@ public function getIndex(string $uid): Indexes
4445
/**
4546
* @param non-empty-string $uid
4647
*/
47-
public function deleteIndex(string $uid): array
48+
public function deleteIndex(string $uid): Task
4849
{
4950
return $this->index($uid)->delete();
5051
}
5152

5253
/**
5354
* @param non-empty-string $uid
5455
*/
55-
public function createIndex(string $uid, array $options = []): array
56+
public function createIndex(string $uid, array $options = []): Task
5657
{
5758
return $this->index->create($uid, $options);
5859
}
5960

6061
/**
6162
* @param non-empty-string $uid
6263
*/
63-
public function updateIndex(string $uid, array $options = []): array
64+
public function updateIndex(string $uid, array $options = []): Task
6465
{
6566
return $this->index($uid)->update($options);
6667
}

0 commit comments

Comments
 (0)