UNPKG

@dossierhq/database-adapter

Version:

A library for adapting Dossier to a database, such as SQLite or PostgreSQL.

31 lines 1.35 kB
/// <reference types="./TransactionContext.d.ts" /> export class TransactionContextImpl { #databaseAdapter; logger; transaction; databasePerformance; constructor(databaseAdapter, logger, databasePerformance, transaction) { this.#databaseAdapter = databaseAdapter; this.logger = logger; this.databasePerformance = databasePerformance; this.transaction = transaction; } async withTransaction(callback) { if (this.transaction) { // Already in transaction return await this.#databaseAdapter.withNestedTransaction(this, this.transaction, async () => { return callback(this); }); } const startTime = performance.now(); const result = await this.#databaseAdapter.withRootTransaction(this, (transaction) => this.copyWithNewTransaction(this.#databaseAdapter, transaction), async (context) => { const acquireDuration = performance.now() - startTime; this.databasePerformance?.onRootTransactionAcquired(acquireDuration); return callback(context); }); const completeDuration = performance.now() - startTime; this.databasePerformance?.onRootTransactionCompleted(completeDuration); return result; } } //# sourceMappingURL=TransactionContext.js.map