/** * Copyright (c) 2026 Niolla * All rights reserved. * * This source code is proprietary and confidential. * Unauthorized copying, modification, distribution, or use * of this file, via any medium, is strictly prohibited. */ // app/models/index.js const { Sequelize, DataTypes } = require("sequelize"); const dbConfig = require("../config/db.config"); let loggingOption = false; if(process.env.NODE_ENV === 'production') { loggingOption = true; } const sequelize = new Sequelize( dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, { host: dbConfig.HOST, port: dbConfig.PORT, dialect: dbConfig.DIALECT, pool: dbConfig.pool, logging: loggingOption } ); const db = {}; db.Sequelize = Sequelize; db.sequelize = sequelize; /* Register db models */ // User and Authentication db.User = require("./user/user.model")(sequelize, DataTypes); db.UserActivity = require("./activities/userActivities.model")(sequelize, DataTypes); db.Profile = require("./user/profile.model")(sequelize, DataTypes); // Uploads db.Upload = require("./upload/upload.model")(sequelize, DataTypes); // Roles and Permissions db.roles = require("./permission/role.model")(sequelize, DataTypes); db.permission = require("./permission/permission.model")(sequelize, DataTypes); db.rolePermission = require("./permission/rolePermission.model")(sequelize, DataTypes); db.userPermission = require("./permission/userPermission.model")(sequelize, DataTypes); // Document Management db.Document = require("./document/document.model")(sequelize, DataTypes); db.DocumentType = require("./document/documentType.model")(sequelize, DataTypes); // Reference Numbers db.referenceNumber = require("./referenceNumbers/referenceNumber.model")(sequelize, DataTypes); // Notifications db.notification = require("./notification/notification.model")(sequelize, DataTypes); db.userNotification = require("./notification/userNotification.model")(sequelize, DataTypes); /* Associations */ Object.keys(db).forEach(model => { if (db[model].associate) { db[model].associate(db); } }); module.exports = db;