import { logger } from "core/common/infrastructure/logger"; import dotenv from "dotenv"; import { Sequelize } from "sequelize"; import { registerModels } from "./register-models"; dotenv.config(); export const sequelize = new Sequelize( process.env.DB_NAME as string, // database process.env.DB_USER as string, // username process.env.DB_PASSWORD as string, // password { host: process.env.DB_HOST as string, dialect: "mysql", port: parseInt(process.env.DB_PORT || "3306", 10), dialectOptions: { multipleStatements: true, dateStrings: true, typeCast: true, //timezone: "Z", }, pool: { max: 10, min: 0, acquire: 30000, idle: 10000, }, logQueryParameters: true, logging: process.env.DB_LOGGING === "true" ? logger.debug : false, define: { charset: "utf8mb4", collate: "utf8mb4_unicode_ci", //freezeTableName: true, underscored: true, timestamps: true, }, } ); export async function connectToDatabase(): Promise { try { await sequelize.authenticate(); await registerModels(); logger.info(`✔️${" "}Database connection established successfully.`); } catch (error) { logger.error("❌ Unable to connect to the database:", error); process.exit(1); } }