meilisearch-swift
meilisearch-swift copied to clipboard
NDJSON/CSV methods to add and update documents
⚠️ This issue is generated, it means the nameing might be done differently in this package (ex: add_documents_json instead of addDocumentsJson). Keep the already existing way of naming in this package to stay idiomatic with the language and this repository.
📣 We strongly recommend doing multiple PRs to solve all the points of this issue
MeiliSearch v0.23.0 introduces two changes:
- new valid formats to push data files, additionally to the JSON format: CSV and NDJSON formats.
- it enforces the
Content-typeheader for every route requiring a payload (POSTandPUTroutes)
Here are the expected changes to completely close the issue:
-
[ ] Currently, the SDKs always send
Content-Type: application/jsonto every request. Only thePOSTandPUTrequests should send theContent-Type: application/jsonand not theDELETEandGETones. -
[ ] Add the following methods and 🔥 the associated tests 🔥 to ADD the documents. Depending on the format type (
csvorndjson) the SDK should sendContent-Type: application/x-dnjsonorContent-Type: text/csv)- [ ]
addDocumentsJson(string docs, string primaryKey) - [ ]
addDocumentsCsv(string docs, string primaryKey) - [ ]
addDocumentsCsvInBatches(string docs, int batchSize, string primaryKey) - [ ]
addDocumentsNdjson(string docs, string primaryKey) - [ ]
addDocumentsNdjsonInBatches(string docs, int batchSize, string primaryKey)
- [ ]
-
[ ] Add the following methods and 🔥 the associated tests 🔥 to UPDATE the documents. Depending on the format type (
csvorndjson) the SDK should sendContent-Type: application/x-dnjsonorContent-Type: text/csv)- [ ]
updateDocumentsJson(string docs, string primaryKey) - [ ]
updateDocumentsCsv(string docs, string primaryKey) - [ ]
updateDocumentsCsvInBatches(string docs, int batchSize, string primaryKey) - [ ]
updateDocumentsNdjson(string docs, string primaryKey) - [ ]
updateDocumentsNdjsonInBatches(string docs, int batchSize, string primaryKey)
- [ ]
docs are the documents sent as String
primaryKey is the primary key of the index
batchSize is the size of the batch. Example: you can send 2000 documents in raw String in docs and ask for a batchSize of 1000, so your documents will be sent to MeiliSearch in two batches.
Example of PRs:
- in PHP SDK: https://github.com/meilisearch/meilisearch-php/pull/235
- in Python SDK: https://github.com/meilisearch/meilisearch-python/pull/329
Related to: https://github.com/meilisearch/integration-guides/issues/146
If this issue is partially/completely implemented, feel free to let us know.