aboutsummaryrefslogtreecommitdiffstats
path: root/packages/plugins-search-meilisearch
diff options
context:
space:
mode:
Diffstat (limited to 'packages/plugins-search-meilisearch')
-rw-r--r--packages/plugins-search-meilisearch/src/index.ts55
1 files changed, 11 insertions, 44 deletions
diff --git a/packages/plugins-search-meilisearch/src/index.ts b/packages/plugins-search-meilisearch/src/index.ts
index 6153a9c4..f0040db7 100644
--- a/packages/plugins-search-meilisearch/src/index.ts
+++ b/packages/plugins-search-meilisearch/src/index.ts
@@ -18,48 +18,12 @@ class MeiliSearchIndexClient implements SearchIndexClient {
const task = await this.index.addDocuments(documents, {
primaryKey: "id",
});
- await this.index.waitForTask(task.taskUid);
- const taskResult = await this.index.getTask(task.taskUid);
- if (taskResult.error) {
- throw new Error(
- `MeiliSearch add documents failed: ${taskResult.error.message}`,
- );
- }
- }
-
- async updateDocuments(documents: BookmarkSearchDocument[]): Promise<void> {
- const task = await this.index.updateDocuments(documents, {
- primaryKey: "id",
- });
- await this.index.waitForTask(task.taskUid);
- const taskResult = await this.index.getTask(task.taskUid);
- if (taskResult.error) {
- throw new Error(
- `MeiliSearch update documents failed: ${taskResult.error.message}`,
- );
- }
- }
-
- async deleteDocument(id: string): Promise<void> {
- const task = await this.index.deleteDocument(id);
- await this.index.waitForTask(task.taskUid);
- const taskResult = await this.index.getTask(task.taskUid);
- if (taskResult.error) {
- throw new Error(
- `MeiliSearch delete document failed: ${taskResult.error.message}`,
- );
- }
+ await this.ensureTaskSuccess(task.taskUid);
}
async deleteDocuments(ids: string[]): Promise<void> {
const task = await this.index.deleteDocuments(ids);
- await this.index.waitForTask(task.taskUid);
- const taskResult = await this.index.getTask(task.taskUid);
- if (taskResult.error) {
- throw new Error(
- `MeiliSearch delete documents failed: ${taskResult.error.message}`,
- );
- }
+ await this.ensureTaskSuccess(task.taskUid);
}
async search(options: SearchOptions): Promise<SearchResponse> {
@@ -82,12 +46,15 @@ class MeiliSearchIndexClient implements SearchIndexClient {
async clearIndex(): Promise<void> {
const task = await this.index.deleteAllDocuments();
- await this.index.waitForTask(task.taskUid);
- const taskResult = await this.index.getTask(task.taskUid);
- if (taskResult.error) {
- throw new Error(
- `MeiliSearch clear index failed: ${taskResult.error.message}`,
- );
+ await this.ensureTaskSuccess(task.taskUid);
+ }
+
+ private async ensureTaskSuccess(taskUid: number): Promise<void> {
+ const task = await this.index.waitForTask(taskUid, {
+ intervalMs: 200,
+ });
+ if (task.error) {
+ throw new Error(`Search task failed: ${task.error.message}`);
}
}
}