"use strict"; const fs = require("fs"); const path = require("path"); const Sequelize = require("sequelize"); const process = require("process"); const basename = path.basename(__filename); let config; try { // Prefer legacy app-specific configuration when available // eslint-disable-next-line import/no-dynamic-require, global-require config = require("../app/config/db.config.js"); } catch (error) { if (error.code !== "MODULE_NOT_FOUND") { throw error; } // Fallback to the shared config loader // eslint-disable-next-line import/no-dynamic-require, global-require const appConfig = require("../src/config/config.js"); const dbConfig = appConfig.db || {}; config = { database: dbConfig.name, username: dbConfig.username, password: dbConfig.password, host: dbConfig.host, port: dbConfig.port, dialect: dbConfig.dialect, logging: false }; } require("dotenv").config(); const db = {}; const 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" && file.indexOf(".test.js") === -1 ); }) .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; // db.Sequelize = Sequelize; db.Op = Sequelize.Op; module.exports = db;