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;