UNPKG

@myfunc/prisma-transactional

Version:

Decorator that wraps all prisma queries along the whole call stack to a single transaction.

34 lines (28 loc) 975 B
import { PrismaClient } from '@prisma/client'; import { ILoggerService, PrismaTransactionalConfig } from './type'; import { ConsoleLogger } from './logger/console-logger'; import { EmptyLogger } from './logger/empty-logger'; class PrismaTransactionalManager { private _prismaClient: PrismaClient | null; private _logger: ILoggerService = new EmptyLogger(); setPrismaClient(prismaClient: PrismaClient) { this._prismaClient = prismaClient; } setConfig(config?: PrismaTransactionalConfig) { if (config?.enableLogging) { this._logger = config.customLogger ?? new ConsoleLogger(); } else { this._logger = new EmptyLogger(); } } get prismaClient(): PrismaClient { if (!this._prismaClient) { throw new Error('PrismaTransactionalManager: Prisma client not set'); } return this._prismaClient; } get logger(): ILoggerService { return this._logger!; } } export const Manager = new PrismaTransactionalManager();