diff --git a/backend/src/routes/admin.js b/backend/src/routes/admin.js index 51bc2df..26de9c7 100644 --- a/backend/src/routes/admin.js +++ b/backend/src/routes/admin.js @@ -39,8 +39,7 @@ router.get('/users', authenticate, requireAdmin, (req, res) => { const links = db.prepare('SELECT COUNT(*) c FROM quick_links WHERE user_id=?').get(u.id).c; const files = db.prepare('SELECT COUNT(*) c FROM files WHERE user_id=?').get(u.id).c; const noteLen = (db.prepare('SELECT content FROM notes WHERE user_id=?').get(u.id)?.content || '').length; - // iCals are stored in localStorage per user - not in DB, so we can't count them server-side - const icals = 0; + const icals = db.prepare('SELECT COUNT(*) c FROM calendar_feeds WHERE user_id=?').get(u.id).c; return { ...u, archiv, bestellung, todos, links, files, icals, noteLen }; }); res.json(stats); diff --git a/backend/src/routes/calendar.js b/backend/src/routes/calendar.js index 85a7652..e12464a 100644 --- a/backend/src/routes/calendar.js +++ b/backend/src/routes/calendar.js @@ -61,3 +61,24 @@ router.get('/fetch', authenticate, async (req, res) => { }); module.exports = router; + +// ── iCal Feed CRUD (gespeichert in DB statt localStorage) ──────────────────── +const db = require('../db'); +const { authenticate: auth } = require('../middleware/auth'); + +router.get('/feeds', auth, (req, res) => { + res.json(db.prepare('SELECT * FROM calendar_feeds WHERE user_id=? ORDER BY id').all(req.user.id)); +}); + +router.post('/feeds', auth, (req, res) => { + const { name, url, color='#4ecdc4' } = req.body; + if (!name?.trim() || !url?.trim()) return res.status(400).json({ error: 'Name und URL erforderlich' }); + const r = db.prepare('INSERT INTO calendar_feeds (user_id,name,url,color) VALUES (?,?,?,?)').run(req.user.id, name.trim(), url.trim(), color); + res.json(db.prepare('SELECT * FROM calendar_feeds WHERE id=?').get(r.lastInsertRowid)); +}); + +router.delete('/feeds/:id', auth, (req, res) => { + const r = db.prepare('DELETE FROM calendar_feeds WHERE id=? AND user_id=?').run(req.params.id, req.user.id); + if (!r.changes) return res.status(404).json({ error: 'Nicht gefunden' }); + res.json({ success: true }); +});