Fix performance issues, add fake user bot to test client, more testing
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();
+ }
+ }
+ }
+};
|