UNPKG

sequelize-transactional

Version:
35 lines (34 loc) 1.69 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.initSequelizeTransactional = exports.getSequelize = exports.CONNECTION_NAME = exports.initSequelizeCLS = exports.getTransactionalNamespace = void 0; const sequelize_1 = require("sequelize"); const cls_hooked_1 = require("cls-hooked"); let transactionalNamespace; const getTransactionalNamespace = () => { if (transactionalNamespace) { return transactionalNamespace; } throw new Error('Could not find namespace for transactions. Make sure you called initSequelizeCLS() before creating Sequelize connections'); }; exports.getTransactionalNamespace = getTransactionalNamespace; function initSequelizeCLS() { if (typeof sequelize_1.Sequelize.useCLS === 'function') { transactionalNamespace = (0, cls_hooked_1.createNamespace)('sequelize-transactional-decorator-namespace'); sequelize_1.Sequelize.useCLS(transactionalNamespace); } else { throw Error('Cannot call Sequelize.useCLS (need Sequelize version 4 or later)'); } } exports.initSequelizeCLS = initSequelizeCLS; exports.CONNECTION_NAME = 'primary'; const sequelizeConnections = {}; const getSequelize = () => sequelizeConnections[exports.CONNECTION_NAME]; exports.getSequelize = getSequelize; function initSequelizeTransactional(sequelizeConnection) { if (!transactionalNamespace) { throw new Error('Sequelize CLS not enabled. Call initSequelizeCLS() before calling initSequelizeTransactional()'); } sequelizeConnections[exports.CONNECTION_NAME] = sequelizeConnection; } exports.initSequelizeTransactional = initSequelizeTransactional;