Update stats in a transaction

This commit is contained in:
Alex Gleason 2024-06-17 16:04:58 -05:00
parent 1983171193
commit 96af3bb8bf
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7
2 changed files with 15 additions and 14 deletions

View file

@ -116,8 +116,20 @@ async function storeEvent(event: DittoEvent, signal?: AbortSignal): Promise<void
const store = await Storages.db();
const kysely = await DittoDB.getInstance();
await updateStats({ event, store, kysely }).catch(debug);
await store.event(event, { signal });
try {
await kysely.transaction().execute(async (trx) => {
await updateStats({ event, store, kysely: trx });
await store.event(event, { signal });
});
} catch (e) {
if (e.message === 'Cannot add a deleted event') {
throw new RelayError('blocked', 'event deleted by user');
} else if (e.message === 'Cannot replace an event with an older event') {
return;
} else {
debug('ERROR', e.message);
}
}
}
/** Parse kind 0 metadata and track indexes in the database. */

View file

@ -60,18 +60,7 @@ class EventsDB implements NStore {
}
await this.deleteEventsAdmin(event);
try {
await this.store.event(event);
} catch (e) {
if (e.message === 'Cannot add a deleted event') {
throw new RelayError('blocked', 'event deleted by user');
} else if (e.message === 'Cannot replace an event with an older event') {
return;
} else {
this.console.debug('ERROR', e.message);
}
}
await this.store.event(event);
}
/** Check if an event has been deleted by the admin. */