const dbConfig = require("../config/db.config.js"); const { Sequelize, DataTypes } = require("sequelize"); const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, { host: dbConfig.HOST, dialect: dbConfig.dialect, pool: dbConfig.pool, logging: false, }); const db = {}; db.Sequelize = Sequelize; db.sequelize = sequelize; db.user = require("./user.model.js")(sequelize, DataTypes); db.Establishment = require("./establishment.model")(sequelize, DataTypes); db.EstablishmentUser = require("./establishment_user.model")(sequelize, DataTypes); db.Product = require("./product.model.js")(sequelize, DataTypes); db.EstablishmentProduct = require("./establishmentProduct.model")(sequelize, DataTypes); db.VariationReasonMaster = require("./variationReasonMaster.model")(sequelize, DataTypes); db.ZeroTargetReasonMaster = require("./zeroTargetReason.model")(sequelize, DataTypes); db.Submission = require("./submission.model")(sequelize, DataTypes); db.SubmissionProduct = require("./submissionProduct.model")(sequelize, DataTypes); db.UnitMaster = require("./UnitMaster.model")(sequelize, DataTypes); db.SubmissionDeadline = require("./submissionDeadline.model")(sequelize, DataTypes); db.NotificationTemplate = require("./notificationTemplate.model")(sequelize, DataTypes); db.QuarterlyWindowsConfiguration = require("./quarterlyWindowsConfiguration.model")(sequelize, DataTypes); db.EstablishmentPasswordResetRequest = require("./establishmentPasswordResetRequest.model")(sequelize, DataTypes); db.Emirate = require("./emirate.model")(sequelize, DataTypes); db.CityTown = require("./cityTown.model")(sequelize, DataTypes); db.SubmissionHistory = require("./submissionHistory.model")(sequelize, DataTypes); // Associations db.Establishment.hasMany(db.EstablishmentUser, { foreignKey: "establishment_id", as: "users", }); db.EstablishmentUser.belongsTo(db.Establishment, { foreignKey: "establishment_id", as: "establishment", }); // **Call associate methods defined in models** Object.keys(db).forEach((modelName) => { if (db[modelName].associate) { db[modelName].associate(db); } }); module.exports = db;