feat: add scavenger to the pipeline

This commit is contained in:
P. Reis 2024-06-21 22:25:34 -03:00
parent 89b56539d1
commit 9731fc2572

View file

@ -17,6 +17,7 @@ import { verifyEventWorker } from '@/workers/verify.ts';
import { nip05Cache } from '@/utils/nip05.ts'; import { nip05Cache } from '@/utils/nip05.ts';
import { updateStats } from '@/utils/stats.ts'; import { updateStats } from '@/utils/stats.ts';
import { getTagSet } from '@/utils/tags.ts'; import { getTagSet } from '@/utils/tags.ts';
import { scavengerEvent } from '@/utils/scavenger.ts';
const debug = Debug('ditto:pipeline'); const debug = Debug('ditto:pipeline');
@ -50,7 +51,7 @@ async function handleEvent(event: DittoEvent, signal: AbortSignal): Promise<void
} }
await Promise.all([ await Promise.all([
storeEvent(event, signal), scavengerEvent({ savedEvent: storeEvent(event, signal), kysely: (await DittoDB.getInstance()) }),
parseMetadata(event, signal), parseMetadata(event, signal),
generateSetEvents(event), generateSetEvents(event),
processMedia(event), processMedia(event),
@ -108,13 +109,15 @@ async function hydrateEvent(event: DittoEvent, signal: AbortSignal): Promise<voi
} }
/** Maybe store the event, if eligible. */ /** Maybe store the event, if eligible. */
async function storeEvent(event: DittoEvent, signal?: AbortSignal): Promise<void> { async function storeEvent(event: DittoEvent, signal?: AbortSignal): Promise<DittoEvent | undefined> {
if (NKinds.ephemeral(event.kind)) return; if (NKinds.ephemeral(event.kind)) return;
const store = await Storages.db(); const store = await Storages.db();
const kysely = await DittoDB.getInstance(); const kysely = await DittoDB.getInstance();
await updateStats({ event, store, kysely }).catch(debug); await updateStats({ event, store, kysely }).catch(debug);
await store.event(event, { signal }); await store.event(event, { signal });
return event;
} }
/** Parse kind 0 metadata and track indexes in the database. */ /** Parse kind 0 metadata and track indexes in the database. */