mongoose-transaction-plugin
Version:
A mongoose plugin for transaction-like semantics between multiple documents.
22 lines (20 loc) • 2.63 kB
JavaScript
;
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==