Merge branch 'avoid-count' into 'main'

Avoid EventDB.count for single row fetches

See merge request soapbox-pub/ditto!145
This commit is contained in:
Alex Gleason 2024-04-08 15:45:31 +00:00
commit 43c25055db
1 changed files with 5 additions and 5 deletions

View File

@ -48,10 +48,10 @@ async function handleEvent(event: DittoEvent, signal: AbortSignal): Promise<void
/** Encounter the event, and return whether it has already been encountered. */ /** Encounter the event, and return whether it has already been encountered. */
async function encounterEvent(event: NostrEvent, signal: AbortSignal): Promise<boolean> { async function encounterEvent(event: NostrEvent, signal: AbortSignal): Promise<boolean> {
const preexisting = (await cache.count([{ ids: [event.id] }])).count > 0; const [existing] = await cache.query([{ ids: [event.id], limit: 1 }]);
cache.event(event); cache.event(event);
reqmeister.event(event, { signal }); reqmeister.event(event, { signal });
return preexisting; return !!existing;
} }
/** Hydrate the event with the user, if applicable. */ /** Hydrate the event with the user, if applicable. */
@ -71,12 +71,12 @@ async function hydrateEvent(event: DittoEvent, signal: AbortSignal): Promise<voi
async function storeEvent(event: DittoEvent, signal?: AbortSignal): Promise<void> { async function storeEvent(event: DittoEvent, signal?: AbortSignal): Promise<void> {
if (isEphemeralKind(event.kind)) return; if (isEphemeralKind(event.kind)) return;
const isDeleted = (await eventsDB.count( const [deletion] = await eventsDB.query(
[{ kinds: [5], authors: [Conf.pubkey, event.pubkey], '#e': [event.id], limit: 1 }], [{ kinds: [5], authors: [Conf.pubkey, event.pubkey], '#e': [event.id], limit: 1 }],
{ signal }, { signal },
)).count > 0; );
if (isDeleted) { if (deletion) {
return Promise.reject(new RelayError('blocked', 'event was deleted')); return Promise.reject(new RelayError('blocked', 'event was deleted'));
} else { } else {
await Promise.all([ await Promise.all([