import { Router } from 'express'; import { v4 as uuidv4 } from 'uuid'; import db from '../db.js'; import { authenticateToken } from '../middleware/auth.js'; const router = Router(); router.get('/', authenticateToken, (req, res) => { const lorebooks = db.prepare('SELECT * FROM lorebooks WHERE user_id = ? ORDER BY updated_at DESC').all(req.userId); res.json({ lorebooks }); }); router.post('/', authenticateToken, (req, res) => { const { name, description } = req.body; if (!name) return res.status(400).json({ error: 'Name is required' }); const id = uuidv4(); db.prepare('INSERT INTO lorebooks (id, user_id, name, description) VALUES (?, ?, ?, ?)').run(id, req.userId, name, description || ''); const lorebook = db.prepare('SELECT * FROM lorebooks WHERE id = ?').get(id); res.status(201).json({ lorebook }); }); router.get('/:id', authenticateToken, (req, res) => { const lorebook = db.prepare('SELECT * FROM lorebooks WHERE id = ? AND user_id = ?').get(req.params.id, req.userId); if (!lorebook) return res.status(404).json({ error: 'Lorebook not found' }); const fragments = db.prepare('SELECT * FROM fragments WHERE lorebook_id = ? ORDER BY created_at DESC').all(req.params.id); res.json({ lorebook, fragments }); }); router.put('/:id', authenticateToken, (req, res) => { const { name, description } = req.body; const existing = db.prepare('SELECT * FROM lorebooks WHERE id = ? AND user_id = ?').get(req.params.id, req.userId); if (!existing) return res.status(404).json({ error: 'Lorebook not found' }); db.prepare('UPDATE lorebooks SET name = ?, description = ?, updated_at = datetime(\'now\') WHERE id = ?') .run(name || existing.name, description !== undefined ? description : existing.description, req.params.id); const lorebook = db.prepare('SELECT * FROM lorebooks WHERE id = ?').get(req.params.id); res.json({ lorebook }); }); router.delete('/:id', authenticateToken, (req, res) => { const existing = db.prepare('SELECT * FROM lorebooks WHERE id = ? AND user_id = ?').get(req.params.id, req.userId); if (!existing) return res.status(404).json({ error: 'Lorebook not found' }); db.prepare('DELETE FROM lorebooks WHERE id = ?').run(req.params.id); res.json({ message: 'Lorebook deleted' }); }); export default router;