Skip to content

Commit 8672f4d

Browse files
committed
Add fields list and string in get_document parameters
1 parent 65dcc18 commit 8672f4d

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

meilisearch/index.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ def search(self, query: str, opt_params: Optional[Dict[str, Any]] = None) -> Dic
249249
body=body
250250
)
251251

252-
def get_document(self, document_id: str, parameters: Optional[Dict[str, Any]] = None) -> Dict[str, Any]:
252+
def get_document(self, document_id: str, fields: Optional[List[str]] = None) -> Dict[str, Any]:
253253
"""Get one document with given document identifier.
254254
255255
Parameters
@@ -267,8 +267,10 @@ def get_document(self, document_id: str, parameters: Optional[Dict[str, Any]] =
267267
MeiliSearchApiError
268268
An error containing details about why Meilisearch can't process your request. Meilisearch error codes are described here: https://docs.meilisearch.com/errors/#meilisearch-errors
269269
"""
270-
if parameters is None:
270+
if fields is None:
271271
parameters = {}
272+
else:
273+
parameters = {'fields': ",".join(fields)}
272274
return self.http.get(
273275
f'{self.config.paths.index}/{self.uid}/{self.config.paths.document}/{document_id}?{parse.urlencode(parameters)}'
274276
)
@@ -293,6 +295,8 @@ def get_documents(self, parameters: Optional[Dict[str, Any]] = None) -> List[Dic
293295
"""
294296
if parameters is None:
295297
parameters = {}
298+
elif 'fields' in parameters and isinstance(parameters, list):
299+
parameters['fields'] = ",".join(parameters['fields'])
296300
return self.http.get(
297301
f'{self.config.paths.index}/{self.uid}/{self.config.paths.document}?{parse.urlencode(parameters)}'
298302
)

meilisearch/task.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,11 @@ def get_tasks(config: Config, parameters: Optional[Dict[str, Any]] = None) -> Di
2929
An error containing details about why Meilisearch can't process your request. Meilisearch error codes are described here: https://docs.meilisearch.com/errors/#meilisearch-errors
3030
"""
3131
http = HttpRequests(config)
32-
if parameters is None or parameters == {}:
32+
if parameters is None:
3333
parameters = {}
34-
elif 'indexUid' in parameters:
35-
parameters['indexUid'] = ",".join(parameters['indexUid'])
34+
for param in parameters:
35+
if isinstance(parameters[param], list):
36+
parameters[param] = ",".join(parameters[param])
3637
return http.get(
3738
f"{config.paths.task}?{parse.urlencode(parameters)}"
3839
)

tests/index/test_index_document_meilisearch.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,14 @@ def test_get_document(index_with_documents):
5050
assert 'title' in response
5151
assert response['title'] == 'The Highwaymen'
5252

53+
def test_get_document_with_fields(index_with_documents):
54+
"""Tests getting one document from a populated index."""
55+
response = index_with_documents().get_document('500682', ['id', 'title'])
56+
assert isinstance(response, dict)
57+
assert 'title' in response
58+
assert 'poster' not in response
59+
assert response['title'] == 'The Highwaymen'
60+
5361
def test_get_document_inexistent(empty_index):
5462
"""Tests getting one inexistent document from a populated index."""
5563
with pytest.raises(Exception):

0 commit comments

Comments
 (0)