const config = require("../config"); const dbConfig = require("../config/db.config"); const redisConfig = require("../config/redis.config"); const Sequelize = require("sequelize"); const sequelize = new Sequelize( dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, { host: dbConfig.HOST, dialect: dbConfig.dialect, port: dbConfig.PORT, pool: { max: dbConfig.pool.max, min: dbConfig.pool.min, acquire: dbConfig.pool.acquire, idle: dbConfig.pool.idle } } ); // SQL Connection const db = {}; db.Sequelize = Sequelize; db.sequelize = sequelize; db.user = require('../models/user.model')(sequelize, Sequelize); db.role = require('../models/role.model')(sequelize, Sequelize); db.bill = require('../models/bill.model')(sequelize, Sequelize); db.intent = require('../models/intent.model')(sequelize, Sequelize); db.role.belongsToMany(db.user, { through: "user_roles" }); db.user.belongsToMany(db.role, { through: "user_roles" }); db.ROLES = ["user", "admin"]; // Redis Connection const Redis = require('redis'); const redis = {}; redis.client = Redis.createClient({ url: `redis://default@${redisConfig.REDIS_HOST}:${redisConfig.REDIS_PORT}` }); redis.ensureGroup = async (stream, group) => { await redis.client.connect().catch(console.error); try { await redis.client.xGroupCreate(stream, group, "0", {MKSTREAM: true}); console.log(`Created consumer group: ${group} (${stream})`); } catch (err) { if (err.message.includes('BUSYGROUP')) { console.log(`Consumer group already exists: ${group} (${stream})`); } else { console.error(err); } } await redis.client.quit(); } module.exports = { db, redis };