const express = require('express'); const db = require('../db'); const router = express.Router(); // GET /api/progress — all topics with pct calculation router.get('/', (req, res) => { try { const rows = db.prepare('SELECT * FROM progress ORDER BY topic').all(); const result = rows.map(r => { const pct = r.exercises_done > 0 ? Math.round((r.exercises_correct / r.exercises_done) * 100) : 0; return { topic: r.topic, exercises_done: r.exercises_done, exercises_correct: r.exercises_correct, percentage: pct, last_session: r.last_session, notes: r.notes, }; }); res.json(result); } catch (err) { console.error('[progress] list error:', err.message); res.status(500).json({ error: err.message }); } }); // PUT /api/progress/:topic — update exercises (body: { correct: bool }) router.put('/:topic', (req, res) => { const topic = req.params.topic; const { correct } = req.body; if (correct === undefined) { return res.status(400).json({ error: 'correct is required' }); } try { const existing = db.prepare('SELECT * FROM progress WHERE topic = ?').get(topic); if (existing) { db.prepare(` UPDATE progress SET exercises_done = exercises_done + 1, exercises_correct = exercises_correct + ?, last_session = datetime('now') WHERE topic = ? `).run(correct === true ? 1 : 0, topic); } else { db.prepare(` INSERT INTO progress (topic, exercises_done, exercises_correct, last_session, notes) VALUES (?, 1, ?, datetime('now'), '[]') `).run(topic, correct === true ? 1 : 0); } const row = db.prepare('SELECT * FROM progress WHERE topic = ?').get(topic); const pct = row.exercises_done > 0 ? Math.round((row.exercises_correct / row.exercises_done) * 100) : 0; res.json({ ...row, percentage: pct }); } catch (err) { console.error('[progress] update error:', err.message); res.status(500).json({ error: err.message }); } }); // DELETE /api/progress/:topic — reset router.delete('/:topic', (req, res) => { const topic = req.params.topic; try { const info = db.prepare('DELETE FROM progress WHERE topic = ?').run(topic); if (info.changes === 0) { return res.status(404).json({ error: 'Topic not found' }); } res.json({ deleted: true }); } catch (err) { console.error('[progress] delete error:', err.message); res.status(500).json({ error: err.message }); } }); module.exports = router;