76 lines
1.9 KiB
JavaScript
76 lines
1.9 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const { settings, getDefaultSettings } = require('../db');
|
|
const syncService = require('../services/syncService');
|
|
|
|
/**
|
|
* Get all settings
|
|
* GET /api/settings
|
|
*/
|
|
router.get('/', async (req, res) => {
|
|
try {
|
|
const currentSettings = await settings.get();
|
|
res.json(currentSettings);
|
|
} catch (err) {
|
|
console.error('Error getting settings:', err);
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Update settings (partial update)
|
|
* PUT /api/settings
|
|
*/
|
|
router.put('/', async (req, res) => {
|
|
try {
|
|
const updates = req.body;
|
|
const updatedSettings = await settings.update(updates);
|
|
|
|
// If sync interval changed, restart the server-side sync timer
|
|
if (updates.epgRefreshInterval !== undefined) {
|
|
syncService.restartSyncTimer().catch(console.error);
|
|
}
|
|
|
|
res.json(updatedSettings);
|
|
} catch (err) {
|
|
console.error('Error updating settings:', err);
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Reset settings to defaults
|
|
* DELETE /api/settings
|
|
*/
|
|
router.delete('/', async (req, res) => {
|
|
try {
|
|
const defaultSettings = await settings.reset();
|
|
res.json(defaultSettings);
|
|
} catch (err) {
|
|
console.error('Error resetting settings:', err);
|
|
res.status(500).json({ error: err.message });
|
|
}
|
|
});
|
|
|
|
/**
|
|
* Get default settings (for reference)
|
|
* GET /api/settings/defaults
|
|
*/
|
|
router.get('/defaults', (req, res) => {
|
|
res.json(getDefaultSettings());
|
|
});
|
|
|
|
/**
|
|
* Get sync status (last sync time)
|
|
* GET /api/settings/sync-status
|
|
*/
|
|
router.get('/sync-status', (req, res) => {
|
|
const lastSyncTime = syncService.getLastSyncTime();
|
|
res.json({
|
|
lastSyncTime: lastSyncTime ? lastSyncTime.toISOString() : null
|
|
});
|
|
});
|
|
|
|
module.exports = router;
|
|
|