diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..9466fa9 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "src/modules/db"] + path = src/modules/db + url = https://gitea.spilum.net/Spilum.Net/mtf-module-db diff --git a/src/controllers/auth.controller.js b/src/controllers/auth.controller.js index 2b78639..e7da80a 100644 --- a/src/controllers/auth.controller.js +++ b/src/controllers/auth.controller.js @@ -1,5 +1,4 @@ -const models = require("../models"); -const db = models.db; +const {db} = require('../modules/db'); const config = require("../config/auth.config"); const User = db.user; const Role = db.role; diff --git a/src/controllers/bill.controller.js b/src/controllers/bill.controller.js index 6e9bb9f..3a13f4a 100644 --- a/src/controllers/bill.controller.js +++ b/src/controllers/bill.controller.js @@ -1,5 +1,4 @@ -const models = require("../models"); -const db = models.db; +const {db} = require('../modules/db'); const {sequelize, Sequelize} = db; const {literal} = Sequelize; const Bill = db.bill; diff --git a/src/controllers/intent.controller.js b/src/controllers/intent.controller.js index bf32d74..762e186 100644 --- a/src/controllers/intent.controller.js +++ b/src/controllers/intent.controller.js @@ -1,10 +1,10 @@ -const models = require("../models"); -const db = models.db; -const redis = models.redis; +const {db} = require('../modules/db'); const {sequelize, Sequelize} = db; const Intent = db.intent; const config = require("../config"); +const {redis} = require('../modules/redis'); + // Get all intents exports.getAllIntents = async (req, res) => { try { diff --git a/src/middleware/authJwt.js b/src/middleware/authJwt.js index 3bb0f52..074652f 100644 --- a/src/middleware/authJwt.js +++ b/src/middleware/authJwt.js @@ -1,6 +1,6 @@ const jwt = require("jsonwebtoken"); const config = require("../config/auth.config"); -const db = require("../models"); +const {db} = require('../modules/db'); const User = db.user; verifyToken = (req, res, next) => { diff --git a/src/middleware/verifySignUp.js b/src/middleware/verifySignUp.js index bb6720a..b5c1e00 100644 --- a/src/middleware/verifySignUp.js +++ b/src/middleware/verifySignUp.js @@ -1,4 +1,4 @@ -const db = require('../models'); +const {db} = require('../modules/db'); const ROLES = db.ROLES; const User = db.user; diff --git a/src/models/bill.model.js b/src/models/bill.model.js deleted file mode 100644 index 4b9da30..0000000 --- a/src/models/bill.model.js +++ /dev/null @@ -1,36 +0,0 @@ -module.exports = (sequelize, DataTypes) => { - const Bill = sequelize.define("bills", { - id: { - type: DataTypes.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false - }, - name: { - type: DataTypes.STRING, - allowNull: false - }, - amount: { - type: DataTypes.INTEGER, - allowNull: false - }, - due: { - type: DataTypes.DATEONLY, - allowNull: false - }, - type: { - type: DataTypes.STRING, - allowNull: true - }, - shared: { - type: DataTypes.BOOLEAN, - allowNull: false, - defaultValue: false - } - }, { - tableName: "bills", - timestamps: true - }); - - return Bill; -}; \ No newline at end of file diff --git a/src/models/index.js b/src/models/index.js deleted file mode 100644 index 549b563..0000000 --- a/src/models/index.js +++ /dev/null @@ -1,72 +0,0 @@ -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 -}; \ No newline at end of file diff --git a/src/models/intent.model.js b/src/models/intent.model.js deleted file mode 100644 index 507779b..0000000 --- a/src/models/intent.model.js +++ /dev/null @@ -1,23 +0,0 @@ -module.exports = (sequelize, DataTypes) => { - const Intent = sequelize.define("intents", { - id: { - type: DataTypes.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false - }, - name: { - type: DataTypes.STRING, - allowNull: false - }, - examples: { - type: DataTypes.ARRAY(DataTypes.STRING), - allowNull: true - } - }, { - tableName: "intents", - timestamps: false - }); - - return Intent; -}; \ No newline at end of file diff --git a/src/models/role.model.js b/src/models/role.model.js deleted file mode 100644 index edc1f3d..0000000 --- a/src/models/role.model.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = (sequelize, DataTypes) => { - const Role = sequelize.define("roles", { - id: { - type: DataTypes.INTEGER, - primaryKey: true, - autoIncrement: true, - allowNull: false, - }, - name: { - type: DataTypes.STRING, - allowNull: false - } - }, { - tableName: "roles", - timestamps: true - }); - - return Role; -} \ No newline at end of file diff --git a/src/models/user.model.js b/src/models/user.model.js deleted file mode 100644 index f6105fb..0000000 --- a/src/models/user.model.js +++ /dev/null @@ -1,15 +0,0 @@ -module.exports = (sequelize, Sequelize) => { - const User = sequelize.define("users", { - username: { - type: Sequelize.STRING - }, - email: { - type: Sequelize.STRING - }, - password: { - type: Sequelize.STRING - } - }); - - return User; -} \ No newline at end of file diff --git a/src/modules/db b/src/modules/db new file mode 160000 index 0000000..22ba7b7 --- /dev/null +++ b/src/modules/db @@ -0,0 +1 @@ +Subproject commit 22ba7b747cf16a9229a1f1f0e5223486736ba230 diff --git a/src/server.js b/src/server.js index 8f08b21..fb5e1b0 100644 --- a/src/server.js +++ b/src/server.js @@ -8,17 +8,19 @@ const cors = require("cors"); const helmet = require("helmet"); const rateLimit = require("express-rate-limit"); const morgan = require("morgan"); -const models = require('./models'); -const db = models.db; -const redis = models.redis; + +const {db} = require('./modules/db'); const {sequelize, Sequelize} = db; const Role = db.role; +const {redis} = require('./modules/redis'); + const authConfig = require("./config/auth.config"); const config = require("./config"); const createApp = async () => { - await redis.ensureGroup("commands", `${config.DEVICE_ID}-cg`); + await redis.connect(); + await redis.ensureGroup("commands", `${config.DEVICE_ID}`); const app = express();