sequelize-transaction-wrapper
Version:
Wraps a function with a sequelize transaction and automatically commits or rolls back is error
27 lines (22 loc) • 705 B
JavaScript
function transactionCallback(transaction, callback) {
return function (...args) {
var done = () => callback.apply(null, args);
if (args[0]) {
return transaction.rollback().then(done, done);
}
transaction.commit().then(done, done);
};
}
module.exports = function (sequelize, fn) {
return function transactionWrapper(...args) {
var callback = args.pop();
sequelize.transaction().then(
function (transaction) {
args.push(transactionCallback(transaction, callback));
args.unshift(transaction);
fn.apply(null, args);
},
callback
);
};
};