group editor implemented
Sonarqube Scanner / Prepare environment (push) Successful in 6s
Sonarqube Scanner / Build and test (push) Successful in 27s
Sonarqube Scanner / Deploy to Server (push) Failing after 7s
Sonarqube Scanner / SonarQube analysis (push) Failing after 1m14s

This commit is contained in:
Florian Zumpe
2026-10-18 16:33:12 +02:00
parent 9c4d5f6324
commit 31768ae907
28 changed files with 2361 additions and 55 deletions
+31
View File
@@ -0,0 +1,31 @@
import { Router } from 'express';
import { createGroup, joinGroup, listGroups, renewCode, closeGroup, verifyOrigin, session, member } from '../services/collaboration.js';
import { acquirePoint, releasePoint } from '../services/point-locks.js';
import { HttpError } from '../middleware/errors.js';
export function createGroupsRouter(db) {
const router = Router();
router.use((req, res, next) => {
res.setHeader('Cache-Control', 'no-store');
if (!['GET', 'HEAD'].includes(req.method)) verifyOrigin(req);
next();
});
router.post('/routes/:routeId/pois/:poiId/lock', (req, res) => {
const group = db.prepare('SELECT * FROM collaboration_groups WHERE route_id = ?').get(Number(req.params.routeId));
if (!group) throw new HttpError(404, 'Gruppe nicht gefunden.');
member(db, req, group);
const account = session(db, req);
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));
});
router.get('/', (req, res) => res.json({ groups: listGroups(db, req) }));
router.post('/', (req, res) => res.status(201).json(createGroup(db, req, res)));
router.post('/join', (req, res) => res.json({ group: joinGroup(db, req, res) }));
router.post('/:id/code', (req, res) => res.json(renewCode(db, req, req.params.id)));
router.delete('/:id', (req, res) => res.json(closeGroup(db, req, req.params.id)));
return router;
}