40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
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()
|
|
}
|