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)