UNPKG

mongoose-transaction-plugin

Version:

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

22 lines (20 loc) 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const Bluebird = require("bluebird"); const _debug = require("debug"); const transaction_1 = require("./transaction"); const debug = _debug('ISLAND:CTRL:TRANSACTION'); function transactional(target, key, desc) { const originalMethod = desc.value; desc.value = function (...args) { debug('START @transactional'); return Bluebird.using(new transaction_1.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); }); }; } exports.transactional = transactional; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy8uLi9zcmMvdHJhbnNhY3Rpb24tZGVjb3JhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEscUNBQXFDO0FBQ3JDLGdDQUFnQztBQUNoQywrQ0FBNEM7QUFFNUMsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLHlCQUF5QixDQUFDLENBQUM7QUFFaEQsU0FBZ0IsYUFBYSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSTtJQUM3QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsVUFBUyxHQUFHLElBQVc7UUFDbEMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7UUFDOUIsT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLElBQUkseUJBQVcsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ25ELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxTQUFTO2dCQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQztZQUNyRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN0QixPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQzFDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQVZELHNDQVVDIiwiZmlsZSI6InRyYW5zYWN0aW9uLWRlY29yYXRvci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEJsdWViaXJkIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCAqIGFzIF9kZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuXG5jb25zdCBkZWJ1ZyA9IF9kZWJ1ZygnSVNMQU5EOkNUUkw6VFJBTlNBQ1RJT04nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHRyYW5zYWN0aW9uYWwodGFyZ2V0LCBrZXksIGRlc2MpIHtcbiAgY29uc3Qgb3JpZ2luYWxNZXRob2QgPSBkZXNjLnZhbHVlO1xuICBkZXNjLnZhbHVlID0gZnVuY3Rpb24oLi4uYXJnczogYW55W10pIHtcbiAgICBkZWJ1ZygnU1RBUlQgQHRyYW5zYWN0aW9uYWwnKTtcbiAgICByZXR1cm4gQmx1ZWJpcmQudXNpbmcobmV3IFRyYW5zYWN0aW9uKCkuYmVnaW4oKSwgdCA9PiB7XG4gICAgICBpZiAoYXJnc1thcmdzLmxlbmd0aF0gIT09IHVuZGVmaW5lZCkgdGhyb3cgbmV3IEVycm9yKCdsYXN0IHBhcmFtZXRlciBtdXN0IGJlIGEgVHJhbnNhY2l0b24gb2JqZWN0LicpO1xuICAgICAgYXJnc1thcmdzLmxlbmd0aF0gPSB0O1xuICAgICAgcmV0dXJuIG9yaWdpbmFsTWV0aG9kLmFwcGx5KHRoaXMsIGFyZ3MpO1xuICAgIH0pO1xuICB9O1xufSJdfQ==