UNPKG

@r1tsu/payload

Version:

29 lines (28 loc) 1.11 kB
/** * Starts a new transaction using the db adapter with a random id and then assigns it to the req.transaction * @returns true if beginning a transaction and false when req already has a transaction to use */ export 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=initTransaction.js.map