Initial commit apps directory with .gitignore
This commit is contained in:
80
Sistem-Pelanggaran-Siswa/routes/settings.js
Normal file
80
Sistem-Pelanggaran-Siswa/routes/settings.js
Normal file
@@ -0,0 +1,80 @@
|
||||
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;
|
||||
Reference in New Issue
Block a user