summary refs log tree commit diff
path: root/src/api/routes/assignedUserRoutes.js
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2025-06-03 01:01:40 +0200
committerRory& <root@rory.gay>2025-06-03 01:01:40 +0200
commit6f3f08ed340e59a62a2d0428a5c32f99551ef1ce (patch)
treeff77390b1d3ea61414c14c94ac1fa2a05030879b /src/api/routes/assignedUserRoutes.js
parentMore alarm testing (diff)
downloadnodejs-final-assignment-6f3f08ed340e59a62a2d0428a5c32f99551ef1ce.tar.xz
Fix performance issues, add fake user bot to test client, more testing
Diffstat (limited to 'src/api/routes/assignedUserRoutes.js')
-rw-r--r--src/api/routes/assignedUserRoutes.js56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/api/routes/assignedUserRoutes.js b/src/api/routes/assignedUserRoutes.js
new file mode 100644

index 0000000..dac9b13 --- /dev/null +++ b/src/api/routes/assignedUserRoutes.js
@@ -0,0 +1,56 @@ +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({ + middlewares: [requireMonitor], + description: 'Get assigned users', + async method(req, res) { + res.send(req.user.monitoredUsers); + } + }), + patch: { + middlewares: [requireMonitor], + 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: { + 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(); + } + } + } +};