29 lines
867 B
TypeScript
29 lines
867 B
TypeScript
import type { FastifyInstance } from 'fastify'
|
|
import { runHousekeeping } from '@authportal/db'
|
|
|
|
const HOUR_MS = 60 * 60 * 1000
|
|
|
|
/** Часовая очистка сессий, кодов авторизации и WebAuthn-челленджей. */
|
|
export function startHousekeepingJob(app: FastifyInstance): () => void {
|
|
const run = () => {
|
|
try {
|
|
const res = runHousekeeping(app.db, {
|
|
retentionDays: app.config.sessionRetentionDays,
|
|
})
|
|
if (res.sessions + res.authCodes + res.challenges > 0) {
|
|
app.log.info(res, 'housekeeping purge')
|
|
}
|
|
} catch (err) {
|
|
app.log.warn({ err }, 'housekeeping job failed')
|
|
}
|
|
}
|
|
const initial = setTimeout(run, 30_000)
|
|
const interval = setInterval(run, HOUR_MS)
|
|
initial.unref()
|
|
interval.unref()
|
|
return () => {
|
|
clearTimeout(initial)
|
|
clearInterval(interval)
|
|
}
|
|
}
|