UNPKG

pawa-user

Version:

A user management service for Cosmo Pawa, handling authentication and authorization.

57 lines (44 loc) 1.83 kB
const { initializeDatabase, connectDB } = require("./config/database"); const UserModel = require("./models/user"); const UserActivityModel = require("./models/userActivity"); const userController = require("./controllers/userController"); const authController = require("./controllers/authController"); const { DataTypes } = require('sequelize'); let initialized = false; let User, UserActivity; const initialize = (config) => { if (initialized) { console.warn("pawa-user module already initialized. Skipping."); return; } if (!config || !config.dbConfig || !config.jwtSecret) { throw new Error("pawa-user: Missing configuration. Please provide dbConfig and jwtSecret."); } const { sequelize } = initializeDatabase(config.dbConfig); // Initialize models using the sequelize instance User = UserModel(sequelize, DataTypes); UserActivity = UserActivityModel(sequelize, DataTypes); // Define associations after models are initialized User.hasMany(UserActivity, { foreignKey: "userId" }); UserActivity.belongsTo(User, { foreignKey: "userId" }); // Inject models into userController userController.setModels(User, UserActivity); authController.setModels(User, UserActivity); authController.setJwtSecret(config.jwtSecret); initialized = true; }; module.exports = { initialize, connectDB, get User() { return User; }, get UserActivity() { return UserActivity; }, createUser: userController.createUser, getAllUsers: userController.getAllUsers, getUserById: userController.getUserById, getUserActivity: userController.getUserActivity, registerUser: authController.registerUser, loginUser: authController.loginUser, logoutUser: authController.logoutUser, authenticateToken: authController.authenticateToken, refreshToken: authController.refreshToken, };