payload
Version:
Node, React and MongoDB Headless CMS and Application Framework
36 lines (35 loc) • 3.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "initTransaction", {
enumerable: true,
get: function() {
return initTransaction;
}
});
async function initTransaction(req) {
const { payload, transactionID, transactionIDPromise } = req;
if (transactionID) {
// we already have a transaction, we're not in charge of committing it
return false;
}
if (transactionIDPromise) {
// wait for whoever else is already creating the transaction
await transactionIDPromise;
return false;
}
if (typeof payload.db.beginTransaction === 'function') {
// create a new transaction
req.transactionIDPromise = payload.db.beginTransaction().then((transactionID)=>{
if (transactionID) {
req.transactionID = transactionID;
}
delete req.transactionIDPromise;
});
await req.transactionIDPromise;
return !!req.transactionID;
}
return false;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsaXRpZXMvaW5pdFRyYW5zYWN0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGF5bG9hZFJlcXVlc3QgfSBmcm9tICcuLi9leHByZXNzL3R5cGVzJ1xuXG4vKipcbiAqIFN0YXJ0cyBhIG5ldyB0cmFuc2FjdGlvbiB1c2luZyB0aGUgZGIgYWRhcHRlciB3aXRoIGEgcmFuZG9tIGlkIGFuZCB0aGVuIGFzc2lnbnMgaXQgdG8gdGhlIHJlcS50cmFuc2FjdGlvblxuICogQHJldHVybnMgdHJ1ZSBpZiBiZWdpbm5pbmcgYSB0cmFuc2FjdGlvbiBhbmQgZmFsc2Ugd2hlbiByZXEgYWxyZWFkeSBoYXMgYSB0cmFuc2FjdGlvbiB0byB1c2VcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGluaXRUcmFuc2FjdGlvbihyZXE6IFBheWxvYWRSZXF1ZXN0KTogUHJvbWlzZTxib29sZWFuPiB7XG4gIGNvbnN0IHsgcGF5bG9hZCwgdHJhbnNhY3Rpb25JRCwgdHJhbnNhY3Rpb25JRFByb21pc2UgfSA9IHJlcVxuICBpZiAodHJhbnNhY3Rpb25JRCkge1xuICAgIC8vIHdlIGFscmVhZHkgaGF2ZSBhIHRyYW5zYWN0aW9uLCB3ZSdyZSBub3QgaW4gY2hhcmdlIG9mIGNvbW1pdHRpbmcgaXRcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICBpZiAodHJhbnNhY3Rpb25JRFByb21pc2UpIHtcbiAgICAvLyB3YWl0IGZvciB3aG9ldmVyIGVsc2UgaXMgYWxyZWFkeSBjcmVhdGluZyB0aGUgdHJhbnNhY3Rpb25cbiAgICBhd2FpdCB0cmFuc2FjdGlvbklEUHJvbWlzZVxuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIGlmICh0eXBlb2YgcGF5bG9hZC5kYi5iZWdpblRyYW5zYWN0aW9uID09PSAnZnVuY3Rpb24nKSB7XG4gICAgLy8gY3JlYXRlIGEgbmV3IHRyYW5zYWN0aW9uXG4gICAgcmVxLnRyYW5zYWN0aW9uSURQcm9taXNlID0gcGF5bG9hZC5kYi5iZWdpblRyYW5zYWN0aW9uKCkudGhlbigodHJhbnNhY3Rpb25JRCkgPT4ge1xuICAgICAgaWYgKHRyYW5zYWN0aW9uSUQpIHtcbiAgICAgICAgcmVxLnRyYW5zYWN0aW9uSUQgPSB0cmFuc2FjdGlvbklEXG4gICAgICB9XG4gICAgICBkZWxldGUgcmVxLnRyYW5zYWN0aW9uSURQcm9taXNlXG4gICAgfSlcbiAgICBhd2FpdCByZXEudHJhbnNhY3Rpb25JRFByb21pc2VcbiAgICByZXR1cm4gISFyZXEudHJhbnNhY3Rpb25JRFxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuIl0sIm5hbWVzIjpbImluaXRUcmFuc2FjdGlvbiIsInJlcSIsInBheWxvYWQiLCJ0cmFuc2FjdGlvbklEIiwidHJhbnNhY3Rpb25JRFByb21pc2UiLCJkYiIsImJlZ2luVHJhbnNhY3Rpb24iLCJ0aGVuIl0sIm1hcHBpbmdzIjoiOzs7OytCQU1zQkE7OztlQUFBQTs7O0FBQWYsZUFBZUEsZ0JBQWdCQyxHQUFtQjtJQUN2RCxNQUFNLEVBQUVDLE9BQU8sRUFBRUMsYUFBYSxFQUFFQyxvQkFBb0IsRUFBRSxHQUFHSDtJQUN6RCxJQUFJRSxlQUFlO1FBQ2pCLHNFQUFzRTtRQUN0RSxPQUFPO0lBQ1Q7SUFDQSxJQUFJQyxzQkFBc0I7UUFDeEIsNERBQTREO1FBQzVELE1BQU1BO1FBQ04sT0FBTztJQUNUO0lBQ0EsSUFBSSxPQUFPRixRQUFRRyxFQUFFLENBQUNDLGdCQUFnQixLQUFLLFlBQVk7UUFDckQsMkJBQTJCO1FBQzNCTCxJQUFJRyxvQkFBb0IsR0FBR0YsUUFBUUcsRUFBRSxDQUFDQyxnQkFBZ0IsR0FBR0MsSUFBSSxDQUFDLENBQUNKO1lBQzdELElBQUlBLGVBQWU7Z0JBQ2pCRixJQUFJRSxhQUFhLEdBQUdBO1lBQ3RCO1lBQ0EsT0FBT0YsSUFBSUcsb0JBQW9CO1FBQ2pDO1FBQ0EsTUFBTUgsSUFBSUcsb0JBQW9CO1FBQzlCLE9BQU8sQ0FBQyxDQUFDSCxJQUFJRSxhQUFhO0lBQzVCO0lBQ0EsT0FBTztBQUNUIn0=