UNPKG

mongoose-transaction-plugin

Version:

A mongoose plugin for transaction-like semantics between multiple documents.

17 lines (15 loc) 590 B
import * as Bluebird from 'bluebird'; import * as _debug from 'debug'; import { Transaction } from './transaction'; const debug = _debug('ISLAND:CTRL:TRANSACTION'); export function transactional(target, key, desc) { const originalMethod = desc.value; desc.value = function(...args: any[]) { debug('START @transactional'); return Bluebird.using(new Transaction().begin(), t => { if (args[args.length] !== undefined) throw new Error('last parameter must be a Transaciton object.'); args[args.length] = t; return originalMethod.apply(this, args); }); }; }