50 lines
1.4 KiB
JavaScript
50 lines
1.4 KiB
JavaScript
const fs = require('fs'),
|
|
path = require('path'),
|
|
basename = path.basename(__filename),
|
|
chalk = require('chalk'),
|
|
utils = require('../../routes/utils');
|
|
|
|
const { Sequelize } = require('sequelize');
|
|
const db = {};
|
|
const Op = Sequelize.Op;
|
|
const sequelize = new Sequelize(
|
|
process.env.MYSQL_DBNAME,
|
|
process.env.MYSQL_DBUSER,
|
|
process.env.MYSQL_DBPASS,
|
|
{
|
|
host: process.env.MYSQL_DBHOST,
|
|
port: process.env.MYSQL_DBPORT,
|
|
dialect: process.env.MYSQL_DBTYPE,
|
|
$like: Op.like,
|
|
$not: Op.not
|
|
}
|
|
);
|
|
|
|
sequelize.authenticate().then(() => {
|
|
if (process.env.DEBUG) {
|
|
console.log(`${utils.getDateTimeISOString()}`, chalk.green('MySQL connection has been established successfully'));
|
|
}
|
|
}).catch((error) => {
|
|
console.log(`${utils.getDateTimeISOString()}`, chalk.red('Unable to connect to the MySQL database'));
|
|
console.error(error);
|
|
});
|
|
|
|
fs
|
|
.readdirSync(__dirname)
|
|
.filter(file => {
|
|
return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js');
|
|
})
|
|
.forEach(file => {
|
|
const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes);
|
|
db[model.name] = model;
|
|
});
|
|
|
|
Object.keys(db).forEach(modelName => {
|
|
if (db[modelName].associate) {
|
|
db[modelName].associate(db);
|
|
}
|
|
});
|
|
|
|
db.sequelize = sequelize;
|
|
|
|
module.exports = db; |