mtf-backend/src/models/index.js

72 lines
1.8 KiB
JavaScript

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
};