UNPKG

tomjs

Version:
108 lines (104 loc) 3.5 kB
const require2 = require('tomjs/handlers/require2'); const configs = require2('tomjs/configs')(); const Sequelize = require2('sequelize'); module.exports = async function(config) { let url = ""; if (typeof(config) == "string") { url = config; } let options = {}; let host = "localhost"; let database = ""; let username = ""; let password = ""; let dialect = ""; if (typeof(config) == "object") { if (config.useCLS) { const cls = require2('continuation-local-storage'); let namespace = cls.createNamespace(config.namespaceCLS); Sequelize.useCLS(namespace); } Object.assign(options, config); for (var key in options) { switch (key) { case 'await': case 'showConnInfo': { delete options[key]; break; } case "url": { url = options[key]; delete options[key]; break; } case "username": { username = options[key]; delete options[key]; break; } case "password": { password = options[key]; delete options[key]; break; } case "database": { database = options[key]; delete options[key]; break; } case "type": { dialect = options[key]; options['dialect'] = dialect; delete options[key]; break; } } } if (url.length <= 0) { let sHead = ''; if (username.length > 0) { if (password.length > 0) { sHead = username + ":" + password + '@'; } else { sHead = username + '@'; } } let sPort = options.port != undefined ? (':' + options.port) : ''; url = `${dialect}://${sHead}${host}:${sPort}/${database}`; } if (config.showConnInfo) { console.log(dialect + '.connect begin -> ', url, options); } } if (url.length > 0) { console.log(dialect + '.connect begin -> ', url, options); } let sequelize = undefined; if (url.length > 0) { sequelize = new Sequelize(url); } else { sequelize = new Sequelize(database, username, password, options); } if (config.await || configs.database.await) { await sequelize.authenticate() if (config.showConnInfo) { console.log('new mongoose.connect ok -> ', url, options); } } else { sequelize .authenticate() .then(() => { if (config.showConnInfo) { console.log('new ' + dialect + '.connect ok -> ', url, options); } }) .catch(err => { console.error(dialect + ': Unable to connect to the database:', err); }); } return sequelize; }