UNPKG

payload

Version:

Node, React and MongoDB Headless CMS and Application Framework

36 lines (35 loc) 3.53 kB
"use strict"; 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=