import { getUserById } from '#db/dbAccess/index.js'; import { requireMonitor } from '#api/middlewares/index.js'; import { RouteMethod } from '#api/RouteDescription.js'; import { SafeNSoundError } from '#util/error.js'; /** * @type {RouteDescription} */ export const assignedUserRoute = { path: '/monitor/assignedUsers', methods: { get: new RouteMethod({ exampleHeaders: { Authorization: 'Bearer {{accessToken}}' }, middlewares: [requireMonitor], description: 'Get assigned users', async method(req, res) { res.send(req.user.monitoredUsers); } }), patch: { exampleHeaders: { Authorization: 'Bearer {{accessToken}}' }, middlewares: [requireMonitor], exampleBody: { userId: 'abcdef' }, description: 'Add an assigned user by ID', async method(req, res) { if (!req.body.userId) { throw new SafeNSoundError({ errCode: 'MISSING_FIELD_ERROR', message: 'User ID is required', field: 'userId' }); } if (req.user.monitoredUsers.includes(req.body.userId)) { throw new SafeNSoundError({ errCode: 'DUPLICATE_KEY_ERROR', message: 'User is already assigned' }); } req.user.monitoredUsers.push(req.body.userId); await req.user.save(); res.status(204).send(); } }, delete: { exampleHeaders: { Authorization: 'Bearer {{accessToken}}' }, middlewares: [requireMonitor], description: 'Remove an assigned user by ID', async method(req, res) { // noinspection EqualityComparisonWithCoercionJS req.user.monitoredUsers = req.user.monitoredUsers.filter( userId => userId != req.body.userId ); await req.user.save(); res.status(204).send(); } } } };