import { Router } from 'express'; import healthRouter from './health'; import settingsRouter from './settings'; import mediaRouter from './media'; import rulesRouter from './rules'; import scanRouter from './scan'; import statsRouter from './stats'; import activityRouter from './activity'; import queueRouter from './queue'; import libraryRouter from './library'; import historyRouter from './history'; import unraidRouter from './unraid'; import storageRouter from './storage'; import forecastRouter from './forecast'; import { clearForecastCache } from '../services/forecast'; import usersRouter from './users'; import collectionsRouter from './collections'; import webhooksRouter from './webhooks'; import announcementsRouter from './announcements'; const router = Router(); // Any change (a rule, a setting, a protection, a queue action) can change the // forecast, so drop the cached one. Previews and rule forecasts only read. router.use((req, _res, next) => { if (req.method !== 'GET' && !/\/(preview|forecast)$/.test(req.path)) clearForecastCache(); next(); }); // Mount all route handlers router.use('/health', healthRouter); router.use('/settings', settingsRouter); router.use('/media', mediaRouter); router.use('/rules', rulesRouter); router.use('/scan', scanRouter); router.use('/stats', statsRouter); router.use('/activity', activityRouter); router.use('/queue', queueRouter); router.use('/library', libraryRouter); router.use('/history', historyRouter); router.use('/unraid', unraidRouter); router.use('/storage', storageRouter); router.use('/forecast', forecastRouter); router.use('/users', usersRouter); router.use('/collections', collectionsRouter); router.use('/webhooks', webhooksRouter); router.use('/announcements', announcementsRouter); export default router;