import cron, { type ScheduledTask } from 'node-cron' import { getScanConfig } from './app-settings' import { runFullScan } from './scanner' let scheduledTask: ScheduledTask | null = null export function startScheduler(): void { const { schedule, enabled } = getScanConfig() if (!enabled) { console.log('[scheduler] Scanning is disabled — scheduler not started') return } if (!cron.validate(schedule)) { console.error(`[scheduler] Invalid cron expression "${schedule}" — scheduler not started`) return } scheduledTask = cron.schedule(schedule, () => { console.log('[scheduler] Cron triggered — running full scan') runFullScan().catch((err) => console.error('[scheduler] Scan error:', err)) }) console.log(`[scheduler] Started with schedule: ${schedule}`) } export function stopScheduler(): void { if (scheduledTask) { scheduledTask.stop() scheduledTask = null console.log('[scheduler] Stopped') } } export function restartScheduler(): void { stopScheduler() startScheduler() }