Skip to content

Commit 82f6a04

Browse files
authored
Merge pull request #183 from meilisearch/indexes-changes
Add a type wrapper to the Indexes resources
2 parents bcb47bb + 425825b commit 82f6a04

File tree

5 files changed

+29
-13
lines changed

5 files changed

+29
-13
lines changed

lib/src/client.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import 'package:meilisearch/src/key.dart';
2+
import 'package:meilisearch/src/query_parameters/indexes_query.dart';
23
import 'package:meilisearch/src/query_parameters/keys_query.dart';
34
import 'package:meilisearch/src/query_parameters/tasks_query.dart';
45
import 'package:meilisearch/src/result.dart';
@@ -34,7 +35,7 @@ abstract class MeiliSearchClient {
3435
MeiliSearchIndex index(String uid);
3536

3637
/// Return list of all existing indexes.
37-
Future<List<MeiliSearchIndex>> getIndexes();
38+
Future<Result<MeiliSearchIndex>> getIndexes({IndexesQuery? params});
3839

3940
/// Find index by matching [uid]. Throws error if index is not exists.
4041
Future<MeiliSearchIndex> getIndex(String uid);

lib/src/client_impl.dart

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import 'package:dio/dio.dart';
22
import 'package:meilisearch/src/client_task_impl.dart';
3+
import 'package:meilisearch/src/query_parameters/indexes_query.dart';
34
import 'package:meilisearch/src/query_parameters/keys_query.dart';
45
import 'package:meilisearch/src/query_parameters/tasks_query.dart';
56
import 'package:meilisearch/src/result.dart';
@@ -74,13 +75,12 @@ class MeiliSearchClientImpl implements MeiliSearchClient {
7475
}
7576

7677
@override
77-
Future<List<MeiliSearchIndex>> getIndexes() async {
78-
final response = await http.getMethod<List<dynamic>>('/indexes');
78+
Future<Result<MeiliSearchIndex>> getIndexes({IndexesQuery? params}) async {
79+
final response = await http.getMethod<Map<String, dynamic>>('/indexes',
80+
queryParameters: params?.toQuery());
7981

80-
return response.data!
81-
.cast<Map<String, dynamic>>()
82-
.map((item) => MeiliSearchIndexImpl.fromMap(this, item))
83-
.toList();
82+
return Result<MeiliSearchIndex>.fromMapWithType(
83+
response.data!, (item) => MeiliSearchIndexImpl.fromMap(this, item));
8484
}
8585

8686
@override
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class IndexesQuery {
2+
final int? offset;
3+
final int? limit;
4+
5+
IndexesQuery({
6+
this.limit,
7+
this.offset,
8+
});
9+
10+
Map<String, dynamic> toQuery() {
11+
return <String, dynamic>{
12+
'offset': this.offset,
13+
'limit': this.limit,
14+
}..removeWhere((key, value) => value == null);
15+
}
16+
}

test/indexes_test.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,11 @@ void main() {
7474
await client.createIndex(uid).waitFor();
7575

7676
final index = await client.getRawIndex(uid);
77-
final keys = ['uid', 'name', 'primaryKey', 'createdAt', 'updatedAt'];
77+
final keys = ['uid', 'primaryKey', 'createdAt', 'updatedAt'];
7878

7979
expect(index.keys, containsAll(keys));
8080
expect(index.keys.length, keys.length);
8181
expect(index['primaryKey'], isNull);
82-
expect(index['name'], equals(uid));
8382
});
8483

8584
test('throws exception with a non-existing index', () async {
@@ -91,8 +90,8 @@ void main() {
9190
await client.createIndex(randomUid()).waitFor();
9291
await client.createIndex(randomUid()).waitFor();
9392
await client.createIndex(randomUid()).waitFor();
94-
var indexes = await client.getIndexes();
95-
expect(indexes.length, 3);
93+
var response = await client.getIndexes();
94+
expect(response.total, 3);
9695
});
9796

9897
test('Create index object with UID', () async {

test/utils/client.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,8 @@ String get testServer {
1919
}
2020

2121
Future<void> deleteAllIndexes() async {
22-
var indexes = await client.getIndexes();
23-
for (var item in indexes) {
22+
var data = await client.getIndexes();
23+
for (var item in data.results) {
2424
await item.delete();
2525
}
2626
}

0 commit comments

Comments
 (0)