'use strict'; var fs = require('fs'); var path = require('path'); var Sequelize = require('sequelize'); var basename = path.basename(module.filename); var env = process.env.NODE_ENV || 'development'; var config = require(__dirname + './../config/config.json')[env]; var db = {}; if (config.use_env_variable) { var sequelize = new Sequelize(process.env[config.use_env_variable]); } else { var sequelize = new Sequelize(config.database, config.username, config.password, config); } fs .readdirSync(__dirname) .filter(file => { return (file.indexOf('.') !== 0) && (file !== basename) && (file.slice(-3) === '.js'); }) .forEach(file => { var model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes); db[model.name] = model; }); db.User.belongsToMany(db.Message, {foreignKey: 'UserId', through: 'UserMessages'}); db.Message.belongsTo(db.User, {through: 'UserMessages'}); db.User.hasMany(db.Session); db.Session.belongsTo(db.User); db.User.belongsToMany(db.User, {as: 'follow', through: 'UserFollows'}); Object.keys(db).forEach(modelName => { if (db[modelName].associate) { db[modelName].associate(db); } }); db.sequelize = sequelize; db.Sequelize = Sequelize; module.exports = db;