fix tests and change invitation mechanics
Sonarqube Scanner / Prepare environment (push) Successful in 8s
Sonarqube Scanner / Build and test (push) Successful in 24s
Sonarqube Scanner / SonarQube analysis (push) Failing after 1m2s
Sonarqube Scanner / Deploy to Server (push) Successful in 6s

This commit is contained in:
Florian Zumpe
2026-10-19 17:21:50 +02:00
parent a66a795407
commit cacc63be66
13 changed files with 349 additions and 146 deletions
+11 -2
View File
@@ -1,5 +1,5 @@
import { Router } from 'express';
import { createGroup, joinGroup, listGroups, renewCode, closeGroup, verifyOrigin, session, member, invitationStatus } from '../services/collaboration.js';
import { createGroup, joinGroup, listGroups, renewCode, closeGroup, verifyOrigin, session, member, invitationStatus, extendInvitation, groupById, groupSummary } from '../services/collaboration.js';
import { acquirePoint, releasePoint, touchPoint, pointLocked } from '../services/point-locks.js';
import { HttpError } from '../middleware/errors.js';
@@ -18,13 +18,16 @@ export function createGroupsRouter(db) {
const account = session(db, req);
if (req.body?.heartbeat) {
touchPoint(group, account, req.params.poiId, req.body.token);
extendInvitation(db, group);
return res.status(204).end();
}
if (req.body?.release) {
releasePoint(group, account, req.params.poiId, req.body.token);
return res.json({ released: true });
}
return res.json(acquirePoint(db, group, account, req.params.poiId, req.body));
const lock = acquirePoint(db, group, account, req.params.poiId, req.body);
extendInvitation(db, group);
return res.json(lock);
});
router.get('/routes/:routeId/pois/:poiId/lock', (req, res) => {
const group = db.prepare('SELECT * FROM collaboration_groups WHERE route_id = ?').get(Number(req.params.routeId));
@@ -32,6 +35,12 @@ export function createGroupsRouter(db) {
member(db, req, group);
res.status(pointLocked(db, group, req.params.poiId) ? 423 : 204).end();
});
router.post('/:id/edit', (req, res) => {
const group = groupById(db, req.params.id);
const access = member(db, req, group);
extendInvitation(db, group);
res.json({ group: groupSummary(db, groupById(db, group.id), access.role) });
});
router.get('/:id/invitation', (req, res) => res.json(invitationStatus(db, req, req.params.id)));
router.get('/', (req, res) => res.json({ groups: listGroups(db, req) }));
router.post('/', (req, res) => res.status(201).json(createGroup(db, req, res)));