"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const express_1 = require("express"); const client_1 = require("@prisma/client"); const router = (0, express_1.Router)(); const prisma = new client_1.PrismaClient(); // Get all settings router.get('/', async (req, res) => { try { const { category } = req.query; const where = {}; if (category) { where.category = String(category); } const settings = await prisma.setting.findMany({ where, orderBy: [{ category: 'asc' }, { key: 'asc' }], }); // Convert to key-value object grouped by category const grouped = settings.reduce((acc, setting) => { if (!acc[setting.category]) { acc[setting.category] = {}; } let value = setting.value; if (setting.type === 'number') { value = parseFloat(setting.value); } else if (setting.type === 'boolean') { value = setting.value === 'true'; } else if (setting.type === 'json') { try { value = JSON.parse(setting.value); } catch { } } acc[setting.category][setting.key] = { value, label: setting.label, type: setting.type, }; return acc; }, {}); res.json(grouped); } catch (error) { res.status(500).json({ error: 'Failed to fetch settings' }); } }); // Get setting by key router.get('/:key', async (req, res) => { try { const setting = await prisma.setting.findUnique({ where: { key: req.params.key }, }); if (!setting) { return res.status(404).json({ error: 'Setting not found' }); } res.json(setting); } catch (error) { res.status(500).json({ error: 'Failed to fetch setting' }); } }); // Update setting router.put('/:key', async (req, res) => { try { const { value } = req.body; const setting = await prisma.setting.update({ where: { key: req.params.key }, data: { value: typeof value === 'object' ? JSON.stringify(value) : String(value), }, }); res.json(setting); } catch (error) { res.status(400).json({ error: 'Failed to update setting' }); } }); // Create or update multiple settings router.post('/batch', async (req, res) => { try { const { settings } = req.body; const results = []; for (const [key, data] of Object.entries(settings)) { const result = await prisma.setting.upsert({ where: { key }, update: { value: typeof data.value === 'object' ? JSON.stringify(data.value) : String(data.value), label: data.label, type: data.type, category: data.category, }, create: { key, value: typeof data.value === 'object' ? JSON.stringify(data.value) : String(data.value), label: data.label || key, type: data.type || 'string', category: data.category || 'general', }, }); results.push(result); } res.json(results); } catch (error) { res.status(400).json({ error: 'Failed to update settings' }); } }); exports.default = router; //# sourceMappingURL=settings.js.map