Dateien nach "backend/src/routes" hochladen

This commit is contained in:
2026-05-26 15:51:38 +02:00
parent 37ccdfbdda
commit 77e16b51c2
2 changed files with 22 additions and 2 deletions

View File

@@ -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);

View File

@@ -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 });
});