UNPKG

node-tenancy

Version:

Automatic multi-tenancy for Node with support to Rabbitmq

69 lines (58 loc) 1.56 kB
function getDriverClass() { const driver_name = process.env.DB_DRIVER; if (driver_name == null) { throw new Error(`DB_DRIVER undefined environment variable`); } switch (driver_name) { case 'mongodb': return require('../drivers/database/MongoDriver'); case 'mysql' : case 'postgres' : case 'sqlite' : case 'mariadb' : case 'mssql' : case 'db2' : case 'snowflake' : case 'oracle': return require('../drivers/database/SqlDriver'); default: throw new Error(`Unknown driver: ${driver_name}`); } } function resolveTenantConnection(connection, db_name, options = {}) { const Driver = getDriverClass(); try { return Driver.connect(connection, db_name, options); } catch (err) { throw err; } } function resolveCentralConnection(options = {}) { const Driver = getDriverClass(); const connection = process.env.DB_CONNECTION || process.env.DB_HOST; const db_name = process.env.DB_NAME; try { return Driver.connect(connection, db_name, options); } catch (err) { throw err; } } function registerSchemas(connection, schemas) { const Driver = getDriverClass(); Driver.registerSchemas(connection, schemas); } function getModel(model_name) { return getDriverClass().getModel(model_name); } function getDefaultTenantSchema() { const Driver = getDriverClass(); return Driver.getDefaultTenantSchema(); } module.exports = { getDriverClass, resolveTenantConnection, resolveCentralConnection, registerSchemas, getModel, getDefaultTenantSchema };