summary refs log tree commit diff
path: root/src/api/routes/alarmRoutes.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/api/routes/alarmRoutes.js')
-rw-r--r--src/api/routes/alarmRoutes.js40
1 files changed, 31 insertions, 9 deletions
diff --git a/src/api/routes/alarmRoutes.js b/src/api/routes/alarmRoutes.js

index aeae4ab..b0147ab 100644 --- a/src/api/routes/alarmRoutes.js +++ b/src/api/routes/alarmRoutes.js
@@ -15,14 +15,20 @@ export const alarmByUserRoute = { path: '/user/:id/alarm', methods: { get: new RouteMethod({ + exampleHeaders: { + Authorization: 'Bearer {{accessToken}}' + }, middlewares: [requireMonitor], description: 'Get the alarm for a monitored user, if one is set', async method(req, res) { const user = await getUserById(req.params.id); - res.send(user.alarm); + res.send(user.alarm ?? 'null'); } }), delete: new RouteMethod({ + exampleHeaders: { + Authorization: 'Bearer {{accessToken}}' + }, middlewares: [requireMonitor], description: 'Clear the alarm for a monitored user', async method(req, res) { @@ -44,23 +50,27 @@ export const alarmListRoute = { path: '/alarms', methods: { get: new RouteMethod({ + exampleHeaders: { + Authorization: 'Bearer {{accessToken}}' + }, middlewares: [requireMonitor], description: 'Get a list of all alarms for monitored users', async method(req, res) { // execute the query asynchronously and manually construct a response, for scaling reasons const users = DbUser.find({ - _id: { $in: req.user.monitoredUsers } + _id: { $in: req.user.monitoredUsers }, + alarm: { $exists: true, $ne: null } }) .lean() .cursor(); res.status(200); res.write('{\n'); + let first = true; for await (const user of users) { - if (user.alarm) { - res.write( - `"${user._id}": ${JSON.stringify(user.alarm)},\n` - ); - } + res.write( + `${first ? '' : ','}"${user._id}": ${JSON.stringify(user.alarm)}\n` + ); + first = false; } res.write('}'); res.end(); @@ -76,15 +86,24 @@ export const alarmRoute = { path: '/alarm/@me', methods: { get: new RouteMethod({ + exampleHeaders: { + Authorization: 'Bearer {{accessToken}}' + }, middlewares: [requireUser], description: "Get the current user's alarm", async method(req, res) { - res.send(req.user.alarm); + res.send(req.user.alarm ?? 'null'); } }), put: new RouteMethod({ + exampleHeaders: { + Authorization: 'Bearer {{accessToken}}' + }, + exampleBody: { + reason: 'fall' + }, middlewares: [requireUser], - description: 'Raise an alarm', + description: 'Raise an alarm (enum: one of "fall" or "toilet")', async method(req, res) { req.user.alarm = await AlarmDto.create(req.body); await req.user.save(); @@ -92,6 +111,9 @@ export const alarmRoute = { } }), delete: new RouteMethod({ + exampleHeaders: { + Authorization: 'Bearer {{accessToken}}' + }, middlewares: [requireUser], description: 'Clear alarm', async method(req, res) {