diff --git a/src/pipeline.ts b/src/pipeline.ts index 3eb8913d..425082f2 100644 --- a/src/pipeline.ts +++ b/src/pipeline.ts @@ -1,10 +1,8 @@ import { NostrEvent, NSchema as n } from '@nostrify/nostrify'; import { LNURL } from '@nostrify/nostrify/ln'; import Debug from '@soapbox/stickynotes/debug'; -import { sql } from 'kysely'; import { Conf } from '@/config.ts'; -import { db } from '@/db.ts'; import { deleteAttachedMedia } from '@/db/unattached-media.ts'; import { DittoEvent } from '@/interfaces/DittoEvent.ts'; import { isEphemeralKind } from '@/kinds.ts'; @@ -20,6 +18,7 @@ import { verifyEventWorker } from '@/workers/verify.ts'; import { AdminSigner } from '@/signers/AdminSigner.ts'; import { lnurlCache } from '@/utils/lnurl.ts'; import { nip05Cache } from '@/utils/nip05.ts'; +import { PubkeyDomain } from '@/interfaces/PubkeyDomain.ts'; const debug = Debug('ditto:pipeline'); @@ -74,17 +73,15 @@ async function encounterEvent(event: NostrEvent, signal: AbortSignal): Promise { await hydrateEvents({ events: [event], storage: Storages.db, signal }); - - const domain = await db - .selectFrom('pubkey_domains') - .select('domain') - .where('pubkey', '=', event.pubkey) - .executeTakeFirst(); - - event.author_domain = domain?.domain; + const res = await kv.get(['domain_for_pubkey', event.pubkey]); + if (res.value) { + event.author_domain = res.value.domain; + } } /** Maybe store the event, if eligible. */ @@ -129,15 +126,12 @@ async function parseMetadata(event: NostrEvent, signal: AbortSignal): Promise pubkey_domains.last_updated_at - `.execute(db); + const { created_at } = event; + const existing = await kv.get(['domain_for_pubkey', pubkey]); + if (!existing.value || (existing.value && existing.value.updated_at < created_at)) { + await kv.set(['domain_for_pubkey', pubkey], { domain, updated_at: created_at }); + await kv.set(['pubkeys_for_domain', domain, pubkey], true); + } } catch (_e) { // do nothing }