Files
smanab/Sistem-Pelanggaran-Siswa/routes/settings.js

81 lines
2.4 KiB
JavaScript

import express from 'express';
import pool from '../database.js';
const router = express.Router();
// GET all settings
router.get('/', async (req, res) => {
try {
const [rows] = await pool.execute('SELECT setting_key, setting_value FROM settings');
// Convert array to object
const settings = {};
rows.forEach(row => {
settings[row.setting_key] = row.setting_value;
});
res.json(settings);
} catch (error) {
console.error('Error fetching settings:', error);
res.status(500).json({ error: 'Failed to fetch settings' });
}
});
// GET single setting
router.get('/:key', async (req, res) => {
try {
const [rows] = await pool.execute(
'SELECT setting_value FROM settings WHERE setting_key = ?',
[req.params.key]
);
if (rows.length === 0) {
return res.status(404).json({ error: 'Setting not found' });
}
res.json({ key: req.params.key, value: rows[0].setting_value });
} catch (error) {
console.error('Error fetching setting:', error);
res.status(500).json({ error: 'Failed to fetch setting' });
}
});
// PUT update settings (bulk)
router.put('/', async (req, res) => {
try {
const settings = req.body;
for (const [key, value] of Object.entries(settings)) {
await pool.execute(`
INSERT INTO settings (setting_key, setting_value)
VALUES (?, ?)
ON DUPLICATE KEY UPDATE setting_value = ?
`, [key, value, value]);
}
res.json({ status: 'success', message: 'Settings updated' });
} catch (error) {
console.error('Error updating settings:', error);
res.status(500).json({ error: 'Failed to update settings' });
}
});
// PUT update single setting
router.put('/:key', async (req, res) => {
try {
const { value } = req.body;
await pool.execute(`
INSERT INTO settings (setting_key, setting_value)
VALUES (?, ?)
ON DUPLICATE KEY UPDATE setting_value = ?
`, [req.params.key, value, value]);
res.json({ status: 'success', message: 'Setting updated' });
} catch (error) {
console.error('Error updating setting:', error);
res.status(500).json({ error: 'Failed to update setting' });
}
});
export default router;