alepha
Version:
Easy-to-use modern TypeScript framework for building many kind of applications.
35 lines (30 loc) • 1.25 kB
text/typescript
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(),
},
});
},
});
}