From c59c9487e63aafcc64e3ed8c1ce7b33daf40dd36 Mon Sep 17 00:00:00 2001 From: Morten Olsen Date: Tue, 9 Sep 2025 18:39:11 +0200 Subject: [PATCH] support get and delete on documents --- .../core/src/services/documents/documents.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/packages/core/src/services/documents/documents.ts b/packages/core/src/services/documents/documents.ts index 33cd623..a18cfcd 100644 --- a/packages/core/src/services/documents/documents.ts +++ b/packages/core/src/services/documents/documents.ts @@ -26,6 +26,36 @@ class DocumentsService extends EventEmitter { this.#services = services; } + public get = async (uri: string, type: string) => { + const db = await this.#services.get(DatabaseService).getDb(); + const [document] = await db(tableNames.documents) + .where({ + uri, + type, + }) + .limit(1); + return document; + }; + + public delete = async (uri: string, type: string) => { + const db = await this.#services.get(DatabaseService).getDb(); + const [document] = await db(tableNames.documents) + .where({ + uri, + type, + }) + .limit(1); + if (!document) { + return; + } + const toDelete: Document = { + ...document, + deletedAt: new Date().toISOString(), + }; + await db(tableNames.documents).where({ uri, type }).update(toDelete); + this.emit('upsert', { action: 'delete', document: toDelete }); + }; + public upsert = async (document: DocumentUpsert) => { const db = await this.#services.get(DatabaseService).getDb(); const [current] = await db(tableNames.documents)