stats: use the NPostgres transaction method to avoid transactions within transactions

This commit is contained in:
Alex Gleason 2024-09-12 11:30:57 -05:00
parent 55ee8eaf74
commit d67f2a27ea
No known key found for this signature in database
GPG key ID: 7211D1F99744FBB7
2 changed files with 5 additions and 2 deletions

View file

@ -117,9 +117,8 @@ async function hydrateEvent(event: DittoEvent, signal: AbortSignal): Promise<voi
async function storeEvent(event: DittoEvent, signal?: AbortSignal): Promise<undefined> {
if (NKinds.ephemeral(event.kind)) return;
const store = await Storages.db();
const kysely = await Storages.kysely();
await kysely.transaction().execute(async (kysely) => {
await store.transaction(async (store, kysely) => {
await updateStats({ event, store, kysely });
await store.event(event, { signal });
});

View file

@ -316,6 +316,10 @@ class EventsDB implements NStore {
return filters;
}
async transaction(callback: (store: NPostgres, kysely: Kysely<DittoTables>) => Promise<void>): Promise<void> {
return this.store.transaction((store, kysely) => callback(store, kysely as unknown as Kysely<DittoTables>));
}
}
export { EventsDB };