@@ -1,13 +1,41 @@
|
||||
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) {
|
||||
let v = r.value;
|
||||
if (typeof v === 'string' && /^\d+$/.test(v)) v = Number(v);
|
||||
obj[r.key] = v;
|
||||
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) {
|
||||
|
||||
Reference in New Issue
Block a user