Add settings management with Bundesland selection and holiday calculations
This commit is contained in:
79
server.js
79
server.js
@@ -40,6 +40,20 @@ try {
|
||||
console.error('Error during migration:', error);
|
||||
}
|
||||
|
||||
// Create settings table if it doesn't exist
|
||||
try {
|
||||
db.exec(`
|
||||
CREATE TABLE IF NOT EXISTS settings (
|
||||
key TEXT PRIMARY KEY,
|
||||
value TEXT NOT NULL,
|
||||
updated_at DATETIME DEFAULT CURRENT_TIMESTAMP
|
||||
)
|
||||
`);
|
||||
console.log('Settings table ready');
|
||||
} catch (error) {
|
||||
console.error('Error creating settings table:', error);
|
||||
}
|
||||
|
||||
console.log('Database initialized successfully');
|
||||
|
||||
// ============================================
|
||||
@@ -334,6 +348,71 @@ app.get('/api/export', (req, res) => {
|
||||
}
|
||||
});
|
||||
|
||||
// ============================================
|
||||
// SETTINGS ENDPOINTS
|
||||
// ============================================
|
||||
|
||||
// Get a setting by key
|
||||
app.get('/api/settings/:key', (req, res) => {
|
||||
try {
|
||||
const { key } = req.params;
|
||||
const stmt = db.prepare('SELECT value FROM settings WHERE key = ?');
|
||||
const result = stmt.get(key);
|
||||
|
||||
if (!result) {
|
||||
return res.status(404).json({ error: 'Setting not found' });
|
||||
}
|
||||
|
||||
res.json({ key, value: result.value });
|
||||
} catch (error) {
|
||||
console.error('Error getting setting:', error);
|
||||
res.status(500).json({ error: 'Failed to get setting' });
|
||||
}
|
||||
});
|
||||
|
||||
// Set a setting
|
||||
app.post('/api/settings', (req, res) => {
|
||||
try {
|
||||
const { key, value } = req.body;
|
||||
|
||||
if (!key || value === undefined) {
|
||||
return res.status(400).json({ error: 'Key and value are required' });
|
||||
}
|
||||
|
||||
const stmt = db.prepare(`
|
||||
INSERT INTO settings (key, value, updated_at)
|
||||
VALUES (?, ?, CURRENT_TIMESTAMP)
|
||||
ON CONFLICT(key) DO UPDATE SET
|
||||
value = excluded.value,
|
||||
updated_at = CURRENT_TIMESTAMP
|
||||
`);
|
||||
|
||||
stmt.run(key, value);
|
||||
res.json({ key, value });
|
||||
} catch (error) {
|
||||
console.error('Error setting setting:', error);
|
||||
res.status(500).json({ error: 'Failed to set setting' });
|
||||
}
|
||||
});
|
||||
|
||||
// Get all settings
|
||||
app.get('/api/settings', (req, res) => {
|
||||
try {
|
||||
const stmt = db.prepare('SELECT key, value FROM settings');
|
||||
const settings = stmt.all();
|
||||
|
||||
const result = {};
|
||||
settings.forEach(s => {
|
||||
result[s.key] = s.value;
|
||||
});
|
||||
|
||||
res.json(result);
|
||||
} catch (error) {
|
||||
console.error('Error getting settings:', error);
|
||||
res.status(500).json({ error: 'Failed to get settings' });
|
||||
}
|
||||
});
|
||||
|
||||
// Start server
|
||||
app.listen(PORT, () => {
|
||||
console.log(`Server is running on http://localhost:${PORT}`);
|
||||
|
||||
Reference in New Issue
Block a user