Fix performance issues, add fake user bot to test client, more testing
1 files changed, 55 insertions, 0 deletions
diff --git a/src/api/routes/adminRoutes.js b/src/api/routes/adminRoutes.js
new file mode 100644
index 0000000..7a1d1e2
--- /dev/null
+++ b/src/api/routes/adminRoutes.js
@@ -0,0 +1,55 @@
+import {
+ requireMonitor,
+ requireUser,
+ requireRole,
+ requireAdmin
+} from '#api/middlewares/index.js';
+import { DbUser, UserType } from '#db/schemas/index.js';
+import { RouteMethod } from '#api/RouteDescription.js';
+import { getUserById } from '#db/dbAccess/index.js';
+import { AlarmDto } from '#dto/AlarmDto.js';
+
+/**
+ * @type {RouteDescription}
+ */
+export const adminGetUserIdsRoute = {
+ path: '/admin/allUserIds',
+ methods: {
+ get: new RouteMethod({
+ middlewares: [requireAdmin],
+ description: 'Get all user IDs',
+ async method(req, res) {
+ // streaming json array
+ res.status(200);
+ res.write('[\n');
+
+ const users = DbUser.find().lean().cursor();
+ for await (const user of users) {
+ res.write(JSON.stringify(user._id) + ',\n');
+ }
+
+ res.write(']');
+ res.end();
+ }
+ })
+ }
+};
+export const adminMonitorAllRoute = {
+ path: '/admin/monitorAllUsers',
+ methods: {
+ post: new RouteMethod({
+ middlewares: [requireAdmin],
+ description: 'Monitor all users',
+ async method(req, res) {
+ const users = await DbUser.find({ type: UserType.USER }).lean();
+ const monitoredUsers = users.map(user => user._id);
+
+ // Update the admin's monitoredUsers
+ req.user.monitoredUsers = monitoredUsers;
+ await req.user.save();
+
+ res.status(204).send();
+ }
+ })
+ }
+};
|