UNPKG

@nicheeeer/prisma-transaction

Version:

## Introduction `prisma-transaction` is a library that provides a simple way to use transactions in Prisma within NestJS using decorators. \ It simplifies handling transactions and ensures consistency across services by utilizing `AsyncLocalStorage` to m

25 lines (22 loc) 718 B
import { ManualTransaction } from './manual-transaction'; import { TransactionOptions } from '../transaction.decorator'; export async function extractTransaction( prisma, options: TransactionOptions, ): Promise<ManualTransaction> { let waiter; const instance = await new Promise<ManualTransaction>((resolveInstance) => { waiter = prisma.$transaction(async (tx) => { const transaction = new ManualTransaction(tx); resolveInstance(transaction); await new Promise<void>((resolve, reject) => transaction.setTransaction( () => resolve(), (error: any) => reject(error), ), ); }, options); }); instance.setWaiter(waiter); return instance; }