UNPKG

alepha

Version:

Easy-to-use modern TypeScript framework for building many kind of applications.

35 lines (30 loc) 1.25 kB
import { $inject } from "alepha"; import { DateTimeProvider } from "alepha/datetime"; import { $repository } from "alepha/orm"; import { $scheduler } from "alepha/scheduler"; import { verifications } from "../entities/verifications.ts"; import { VerificationParameters } from "../parameters/VerificationParameters.ts"; export class VerificationJobs { protected readonly verificationRepository = $repository(verifications); protected readonly verificationParameters = $inject(VerificationParameters); protected readonly dateTimeProvider = $inject(DateTimeProvider); public readonly cleanExpired = $scheduler({ name: "api:verifications:cleanExpired", cron: "0 * * * *", // Hourly at minute 0 description: "Clean expired verifications", handler: async () => { const purgeDays = this.verificationParameters.get("purgeDays"); if (purgeDays <= 0) { return; // Auto deletion is disabled } const dayMs = 24 * 60 * 60 * 1000; const purgeThreshold = this.dateTimeProvider.nowMillis() - purgeDays * dayMs; await this.verificationRepository.deleteMany({ createdAt: { lt: this.dateTimeProvider.of(purgeThreshold).toISOString(), }, }); }, }); }