UNPKG

@dossierhq/database-adapter

Version:

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

26 lines (25 loc) 1.65 kB
import type { ErrorType, Logger, LoggerContext, PromiseResult } from '@dossierhq/core'; import type { DatabaseAdapter } from './DatabaseAdapter.js'; export interface Transaction { _type: 'Transaction'; } export interface DatabasePerformanceCallbacks { onMutexAcquired: (duration: number) => void; onQueryCompleted: (query: string, success: boolean, duration: number) => void; onRootTransactionAcquired: (duration: number) => void; onRootTransactionCompleted: (duration: number) => void; } export interface TransactionContext<TTransaction extends Transaction = Transaction> extends LoggerContext { readonly transaction: TTransaction | null; databasePerformance: DatabasePerformanceCallbacks | null; withTransaction<TOk, TError extends ErrorType>(callback: (context: TransactionContext<TTransaction>) => PromiseResult<TOk, TError>): PromiseResult<TOk, TError | typeof ErrorType.Generic>; } export declare abstract class TransactionContextImpl<TContext extends TransactionContext> implements TransactionContext { #private; readonly logger: Logger; readonly transaction: Transaction | null; readonly databasePerformance: DatabasePerformanceCallbacks | null; constructor(databaseAdapter: DatabaseAdapter, logger: Logger, databasePerformance: DatabasePerformanceCallbacks | null, transaction: Transaction | null); protected abstract copyWithNewTransaction(databaseAdapter: DatabaseAdapter, transaction: Transaction): TContext; withTransaction<TOk, TError extends ErrorType>(callback: (context: TContext) => PromiseResult<TOk, TError>): PromiseResult<TOk, TError | typeof ErrorType.Generic>; }