From 43d675b8372fba90545e2acbc0cd358d7602dc03 Mon Sep 17 00:00:00 2001 From: Alex Gleason Date: Tue, 11 Feb 2025 13:19:32 -0600 Subject: [PATCH] Ensure `.language` property gets added to DittoEvent when it's queried --- src/storages/EventsDB.ts | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/src/storages/EventsDB.ts b/src/storages/EventsDB.ts index fd2323a8..d9eea001 100644 --- a/src/storages/EventsDB.ts +++ b/src/storages/EventsDB.ts @@ -1,9 +1,10 @@ // deno-lint-ignore-file require-await -import { NPostgres } from '@nostrify/db'; +import { NPostgres, NPostgresSchema } from '@nostrify/db'; import { NIP50, NKinds, NostrEvent, NostrFilter, NSchema as n } from '@nostrify/nostrify'; import { logi } from '@soapbox/logi'; import { JsonValue } from '@std/json'; +import { LanguageCode } from 'iso-639-1'; import { Kysely } from 'kysely'; import { nip27 } from 'nostr-tools'; import { z } from 'zod'; @@ -231,6 +232,25 @@ class EventsDB extends NPostgres { return super.query(filters, { ...opts, timeout: opts.timeout ?? this.opts.timeout }); } + /** Parse an event row from the database. */ + protected override parseEventRow(row: NPostgresSchema['nostr_events']): DittoEvent { + const event: DittoEvent = { + id: row.id, + kind: row.kind, + pubkey: row.pubkey, + content: row.content, + created_at: Number(row.created_at), + tags: row.tags, + sig: row.sig, + }; + + if (!this.opts.pure) { + event.language = row.search_ext.language as LanguageCode | undefined; + } + + return event; + } + /** Delete events based on filters from the database. */ override async remove(filters: NostrFilter[], opts: { signal?: AbortSignal; timeout?: number } = {}): Promise { logi({ level: 'debug', ns: 'ditto.remove', source: 'db', filters: filters as JsonValue });