59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
const glob = require('glob');
|
|
const path = require('path');
|
|
const Sequelize = require('sequelize');
|
|
|
|
const config = require('../config');
|
|
const log = require('./logger');
|
|
|
|
const modulesDir = path.resolve(__dirname + '/../modules/')
|
|
const globOptions = {
|
|
cwd: modulesDir,
|
|
nocase: true,
|
|
nodir: true,
|
|
absolute: true,
|
|
}
|
|
|
|
log.info('Configurando DB.');
|
|
const db = {};
|
|
|
|
const sequelize = new Sequelize(
|
|
config.database.database,
|
|
config.database.username,
|
|
config.database.password,
|
|
config.database, {
|
|
dialect: 'mysql',
|
|
operatorAliases: false,
|
|
logging: config.debug,
|
|
define: {
|
|
charset: 'utf8',
|
|
collate: 'utf8_general_ci',
|
|
},
|
|
pool: {
|
|
max: 140,
|
|
min: 0,
|
|
idle: 10000
|
|
}
|
|
}
|
|
);
|
|
|
|
try {
|
|
db.sequelize = sequelize;
|
|
db.Sequelize = Sequelize;
|
|
|
|
glob.sync("**/*.model.js", globOptions)
|
|
.forEach(function (file) {
|
|
var model = sequelize.import(file);
|
|
log.info('Loading "' + model.name + '" model.');
|
|
db[model.name] = model;
|
|
});
|
|
|
|
Object.keys(db).forEach(function (modelName) {
|
|
if (db[modelName].associate) {
|
|
db[modelName].associate(db);
|
|
}
|
|
});
|
|
} catch (error) {
|
|
console.error(error);
|
|
}
|
|
|
|
module.exports = db; |