import pool from '../db/index.js'; import { run } from '../db/index.js'; function parseSettingValue(raw) { if (typeof raw !== 'string') return raw; if (/^-?\d+(\.\d+)?$/.test(raw)) return Number(raw); if (raw === 'true') return true; if (raw === 'false') return false; return raw; } export async function getSettings(req, res) { try { const { rows } = await pool.query('SELECT key, value FROM settings'); const obj = {}; for (const r of rows) { obj[r.key] = parseSettingValue(r.value); } res.json(obj); } catch (err) { res.status(500).json({ error: err.message }); } } export async function updateSettings(req, res) { try { const updates = req.body || {}; for (const [key, value] of Object.entries(updates)) { await run( 'INSERT INTO settings (key, value) VALUES ($1, $2) ON CONFLICT(key) DO UPDATE SET value = excluded.value', [key, String(value)] ); } // Return updated settings const { rows } = await pool.query('SELECT key, value FROM settings'); const obj = {}; for (const r of rows) { obj[r.key] = parseSettingValue(r.value); } res.json(obj); } catch (err) { res.status(500).json({ error: err.message }); } }