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;