Entity
Services
Controller
Routes
Index.js
const { EntitySchema } = require('typeorm');
module.exports = new EntitySchema({
name: 'UserUserGroup',
tableName: 'user_usergroups',
columns: {
userId: {
name: 'user_id',
type: 'int',
primary: true,
},
usergroupId: {
name: 'usergroup_id',
type: 'int',
primary: true,
},
},
relations: {
user: {
type: 'many-to-one',
target: 'User',
joinColumn: { name: 'user_id' },
onDelete: 'CASCADE',
},
usergroup: {
type: 'many-to-one',
target: 'UserGroup',
joinColumn: { name: 'usergroup_id' },
onDelete: 'CASCADE',
},
},
});
const { AppDataSource } = require('../../../index');
const UserUserGroup = require('../entities/userUserGroup.entity');
/**
* Format the userUserGroup response to exclude sensitive or unnecessary fields.
* @param {object} userUserGroup - The userUserGroup entity object.
* @returns {object} - The formatted userUserGroup response.
*/
const formatUserUserGroupResponse = (userUserGroup) => {
if (!userUserGroup) return null;
return {
userId: userUserGroup.userId,
usergroupId: userUserGroup.usergroupId,
};
};
/**
* Create a new UserUserGroup entry.
* @param {object} data - The data to create the userUserGroup.
* @returns {Promise<object>} - The saved userUserGroup response.
*/
const createUserUserGroup = async (data) => {
const userUserGroupRepository = AppDataSource.getRepository(UserUserGroup);
const userUserGroup = userUserGroupRepository.create(data);
const savedUserUserGroup = await userUserGroupRepository.save(userUserGroup);
return formatUserUserGroupResponse(savedUserUserGroup);
};
/**
* Find a UserUserGroup by its userId and usergroupId.
* @param {number} userId - The ID of the user.
* @param {number} usergroupId - The ID of the user group.
* @returns {Promise<object>} - The found userUserGroup or null.
*/
const findUserUserGroupById = async (userId, usergroupId) => {
const userUserGroupRepository = AppDataSource.getRepository(UserUserGroup);
const userUserGroup = await userUserGroupRepository.findOne({
where: { userId, usergroupId },
});
return formatUserUserGroupResponse(userUserGroup);
};
/**
* Update a UserUserGroup entry.
* @param {number} userId - The ID of the user.
* @param {number} usergroupId - The ID of the user group.
* @param {object} newData - The data to update the userUserGroup.
* @returns {Promise<object>} - The updated userUserGroup or null if not found.
*/
const updateUserUserGroup = async (userId, usergroupId, newData) => {
const userUserGroupRepository = AppDataSource.getRepository(UserUserGroup);
const userUserGroup = await userUserGroupRepository.findOne({ where: { userId, usergroupId } });
if (!userUserGroup) return null;
Object.assign(userUserGroup, newData); // Update the existing fields
const updatedUserUserGroup = await userUserGroupRepository.save(userUserGroup);
return formatUserUserGroupResponse(updatedUserUserGroup);
};
/**
* Delete a UserUserGroup by userId and usergroupId.
* @param {number} userId - The ID of the user.
* @param {number} usergroupId - The ID of the user group.
* @returns {Promise<number>} - Number of affected rows (0 if not found).
*/
const deleteUserUserGroup = async (userId, usergroupId) => {
const userUserGroupRepository = AppDataSource.getRepository(UserUserGroup);
const result = await userUserGroupRepository.delete({ userId, usergroupId });
return result.affected; // Returns 1 if deleted, 0 if not found
};
/**
* Get all UserUserGroup entries.
* @returns {Promise<Array>} - List of all userUserGroups.
*/
const getAllUserUserGroups = async () => {
const userUserGroupRepository = AppDataSource.getRepository(UserUserGroup);
const userUserGroups = await userUserGroupRepository.find();
return userUserGroups.map(formatUserUserGroupResponse);
};
module.exports = {
createUserUserGroup,
findUserUserGroupById,
updateUserUserGroup,
deleteUserUserGroup,
getAllUserUserGroups,
};
const userUserGroupService = require('../services/userUserGroup.service');
/**
* Controller to handle creating a new userUserGroup.
* @param {object} req - The request object with the userId and usergroupId in the body.
* @param {object} res - The response object.
* @returns {Promise<void>}
*/
const createUserUserGroup = async (req, res) => {
const { userId, usergroupId } = req.body;
try {
const newUserUserGroup = await userUserGroupService.createUserUserGroup({ userId, usergroupId });
res.status(201).json({ message: 'UserUserGroup created successfully', userUserGroup: newUserUserGroup });
} catch (error) {
res.status(500).json({ message: 'Error creating userUserGroup', error: error.message });
}
};
/**
* Controller to get a userUserGroup by userId and usergroupId.
* @param {object} req - The request object with userId and usergroupId as params.
* @param {object} res - The response object.
* @returns {Promise<void>}
*/
const getUserUserGroupById = async (req, res) => {
const { userId, usergroupId } = req.params;
try {
const userUserGroup = await userUserGroupService.findUserUserGroupById(userId, usergroupId);
if (!userUserGroup) {
return res.status(404).json({ message: 'UserUserGroup not found' });
}
res.status(200).json(userUserGroup);
} catch (error) {
res.status(500).json({ message: 'Error retrieving userUserGroup', error: error.message });
}
};
/**
* Controller to update an existing userUserGroup.
* @param {object} req - The request object with userId and usergroupId as params and data in the body.
* @param {object} res - The response object.
* @returns {Promise<void>}
*/
const updateUserUserGroup = async (req, res) => {
const { userId, usergroupId } = req.params;
const newData = req.body;
try {
const updatedUserUserGroup = await userUserGroupService.updateUserUserGroup(userId, usergroupId, newData);
if (!updatedUserUserGroup) {
return res.status(404).json({ message: 'UserUserGroup not found' });
}
res.status(200).json({ message: 'UserUserGroup updated successfully', userUserGroup: updatedUserUserGroup });
} catch (error) {
res.status(500).json({ message: 'Error updating userUserGroup', error: error.message });
}
};
/**
* Controller to delete a userUserGroup.
* @param {object} req - The request object with userId and usergroupId as params.
* @param {object} res - The response object.
* @returns {Promise<void>}
*/
const deleteUserUserGroup = async (req, res) => {
const { userId, usergroupId } = req.params;
try {
const deleted = await userUserGroupService.deleteUserUserGroup(userId, usergroupId);
if (!deleted) {
return res.status(404).json({ message: 'UserUserGroup not found' });
}
res.status(200).json({ message: 'UserUserGroup deleted successfully' });
} catch (error) {
res.status(500).json({ message: 'Error deleting userUserGroup', error: error.message });
}
};
/**
* Controller to get all userUserGroups.
* @param {object} req - The request object.
* @param {object} res - The response object.
* @returns {Promise<void>}
*/
const getAllUserUserGroups = async (req, res) => {
try {
const userUserGroups = await userUserGroupService.getAllUserUserGroups();
res.status(200).json(userUserGroups);
} catch (error) {
res.status(500).json({ message: 'Error retrieving userUserGroups', error: error.message });
}
};
module.exports = {
createUserUserGroup,
getUserUserGroupById,
updateUserUserGroup,
deleteUserUserGroup,
getAllUserUserGroups,
};
const express = require('express');
const router = express.Router();
const userUserGroupController = require('../controllers/userUserGroup.controller');
// Routes for userUserGroup CRUD operations
router.post('/user-user-groups', userUserGroupController.createUserUserGroup);
router.get('/user-user-groups/:userId/:usergroupId', userUserGroupController.getUserUserGroupById);
router.put('/user-user-groups/:userId/:usergroupId', userUserGroupController.updateUserUserGroup);
router.delete('/user-user-groups/:userId/:usergroupId', userUserGroupController.deleteUserUserGroup);
router.get('/user-user-groups', userUserGroupController.getAllUserUserGroups);
module.exports = router;
const userUserGroupRoutes = require('./modules/Authentication/routes/userUserGroupRoutes');
app.use('/api', userUserGroupRoutes);
/**
* নির্দিষ্ট ইউজারকে একটি ইউজারগ্রুপে অ্যাসাইন করার জন্য মেথড
* @function assignUserToUserGroup
* @description এই মেথডটি নির্দিষ্ট ব্যবহারকারীকে একটি নির্দিষ্ট ইউজারগ্রুপে অ্যাসাইন করে।
* @param {object} req - রিকোয়েস্ট অবজেক্ট যা ইউজার আইডি এবং ইউজারগ্রুপ আইডি ধারণ করে।
* @param {object} res - রেসপন্স অবজেক্ট যা ক্লায়েন্টকে রেসপন্স পাঠাতে ব্যবহৃত হয়।
* @returns {Promise<void>} - ফাংশনটি একটি প্রমিস রিটার্ন করে যা রিকোয়েস্ট সম্পন্ন হওয়ার পর রেসপন্স প্রদান করে।
*/
const assignUserToUserGroup = async (req, res) => {
const { userId, userGroupId } = req.body;
const userRepository = getRepository(User);
const userGroupRepository = getRepository(UserGroup);
try {
// চেক করা হচ্ছে ব্যবহারকারী এবং ইউজারগ্রুপ বিদ্যমান কিনা
const user = await userRepository.findOne({ where: { id: userId } });
const userGroup = await userGroupRepository.findOne({ where: { id: userGroupId } });
if (!user) {
return res.status(404).json({ message: 'ব্যবহারকারী পাওয়া যায়নি' });
}
if (!userGroup) {
return res.status(404).json({ message: 'ইউজারগ্রুপ পাওয়া যায়নি' });
}
// ইউজারকে ইউজারগ্রুপে অ্যাসাইন করা হচ্ছে
user.userGroup = userGroup;
await userRepository.save(user);
// সফলতার মেসেজ রিটার্ন করা হচ্ছে
return res.status(200).json({ message: 'ব্যবহারকারী সফলভাবে ইউজারগ্রুপে অ্যাসাইন করা হয়েছে' });
} catch (err) {
// ত্রুটি হলে 500 স্টেটাস কোড এবং ত্রুটির মেসেজ পাঠানো হচ্ছে
return res.status(500).json({ message: 'ব্যবহারকারীকে ইউজারগ্রুপে অ্যাসাইন করতে ত্রুটি', error: err.message });
}
};