add scanning

This commit is contained in:
Garret Patti
2026-04-05 18:55:53 -04:00
parent c87a9b33bb
commit 8829188c58
11 changed files with 872 additions and 0 deletions

39
src/lib/scheduler.ts Normal file
View File

@@ -0,0 +1,39 @@
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()
}