const express = require('express'); const db = require('../db'); const router = express.Router(); // GET /api/config — all key-value pairs router.get('/', (req, res) => { try { const rows = db.prepare('SELECT key, value FROM config ORDER BY key').all(); const result = {}; for (const row of rows) { result[row.key] = row.value; } res.json(result); } catch (err) { console.error('[config] list error:', err.message); res.status(500).json({ error: err.message }); } }); // PUT /api/config — upsert by key // Body: { key, value } router.put('/', (req, res) => { const { key, value } = req.body; if (key === undefined || value === undefined) { return res.status(400).json({ error: 'key and value are required' }); } try { const existing = db.prepare('SELECT key FROM config WHERE key = ?').get(key); if (existing) { db.prepare('UPDATE config SET value = ? WHERE key = ?').run(value, key); } else { db.prepare('INSERT INTO config (key, value) VALUES (?, ?)').run(key, value); } res.json({ key, value }); } catch (err) { console.error('[config] upsert error:', err.message); res.status(500).json({ error: err.message }); } }); // POST /api/config/test-vlm — proxy VLM test through backend to avoid CORS router.post('/test-vlm', async (req, res) => { const { url } = req.body; if (!url) { return res.status(400).json({ error: 'url is required' }); } const start = Date.now(); try { const resp = await fetch(url, { method: 'HEAD', signal: AbortSignal.timeout(5000) }); res.json({ success: resp.ok, latency_ms: Date.now() - start, message: resp.ok ? 'Endpoint responde' : `HTTP ${resp.status}`, }); } catch (err) { res.json({ success: false, latency_ms: Date.now() - start, message: err.message, }); } }); module.exports = router;