Merge branch 'fix-language' into 'main'

Ensure `.language` property gets added to DittoEvent when it's queried

See merge request soapbox-pub/ditto!649
This commit is contained in:
Alex Gleason 2025-02-11 19:23:51 +00:00
commit f8777b9e09

View file

@ -1,9 +1,10 @@
// deno-lint-ignore-file require-await // 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 { NIP50, NKinds, NostrEvent, NostrFilter, NSchema as n } from '@nostrify/nostrify';
import { logi } from '@soapbox/logi'; import { logi } from '@soapbox/logi';
import { JsonValue } from '@std/json'; import { JsonValue } from '@std/json';
import { LanguageCode } from 'iso-639-1';
import { Kysely } from 'kysely'; import { Kysely } from 'kysely';
import { nip27 } from 'nostr-tools'; import { nip27 } from 'nostr-tools';
import { z } from 'zod'; import { z } from 'zod';
@ -231,6 +232,25 @@ class EventsDB extends NPostgres {
return super.query(filters, { ...opts, timeout: opts.timeout ?? this.opts.timeout }); 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. */ /** Delete events based on filters from the database. */
override async remove(filters: NostrFilter[], opts: { signal?: AbortSignal; timeout?: number } = {}): Promise<void> { override async remove(filters: NostrFilter[], opts: { signal?: AbortSignal; timeout?: number } = {}): Promise<void> {
logi({ level: 'debug', ns: 'ditto.remove', source: 'db', filters: filters as JsonValue }); logi({ level: 'debug', ns: 'ditto.remove', source: 'db', filters: filters as JsonValue });