72 lines
1.8 KiB
JavaScript
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
|
|
}; |