aboutsummaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorMohamed Bassem <me@mbassem.com>2025-09-06 05:54:52 +0000
committerMohamed Bassem <me@mbassem.com>2025-09-06 05:54:52 +0000
commitfcfe6a53b49dc2fdff6abac876b41b52f1b0fed7 (patch)
treec5fc29d178e08be37dfd7e3ab9d026e514529dd2 /packages
parent80a10231ad4c496c917aed084f9d45e6dcca191a (diff)
downloadkarakeep-fcfe6a53b49dc2fdff6abac876b41b52f1b0fed7.tar.zst
fix: Reduce polling interval on meilisearch tasks
Diffstat (limited to 'packages')
-rw-r--r--packages/plugins-search-meilisearch/src/index.ts55
-rw-r--r--packages/shared/search.ts3
2 files changed, 12 insertions, 46 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}`);
}
}
}
diff --git a/packages/shared/search.ts b/packages/shared/search.ts
index 2afc9763..5158f30f 100644
--- a/packages/shared/search.ts
+++ b/packages/shared/search.ts
@@ -30,6 +30,7 @@ export interface SearchResult {
}
export interface SearchOptions {
+ // TODO: Make query, filter and sort strongly typed
query: string;
filter?: string[];
limit?: number;
@@ -45,8 +46,6 @@ export interface SearchResponse {
export interface SearchIndexClient {
addDocuments(documents: BookmarkSearchDocument[]): Promise<void>;
- updateDocuments(documents: BookmarkSearchDocument[]): Promise<void>;
- deleteDocument(id: string): Promise<void>;
deleteDocuments(ids: string[]): Promise<void>;
search(options: SearchOptions): Promise<SearchResponse>;
clearIndex(): Promise<void>;