Sharkey/packages/backend/src/daemons/JanitorService.ts

38 lines
958 B
TypeScript
Raw Normal View History

2022-09-17 20:27:08 +02:00
import { Inject, Injectable } from '@nestjs/common';
import { LessThan } from 'typeorm';
import { DI } from '@/di-symbols.js';
2022-09-20 22:33:11 +02:00
import type { AttestationChallengesRepository } from '@/models/index.js';
2022-09-17 20:27:08 +02:00
import type { OnApplicationShutdown } from '@nestjs/common';
const interval = 30 * 60 * 1000;
@Injectable()
export class JanitorService implements OnApplicationShutdown {
2022-09-18 20:11:50 +02:00
private intervalId: NodeJS.Timer;
2022-09-17 20:27:08 +02:00
constructor(
@Inject(DI.attestationChallengesRepository)
private attestationChallengesRepository: AttestationChallengesRepository,
) {
}
/**
* Clean up database occasionally
*/
public start(): void {
const tick = async () => {
await this.attestationChallengesRepository.delete({
createdAt: LessThan(new Date(new Date().getTime() - 5 * 60 * 1000)),
});
};
tick();
2022-09-18 20:11:50 +02:00
this.intervalId = setInterval(tick, interval);
2022-09-17 20:27:08 +02:00
}
public onApplicationShutdown(signal?: string | undefined) {
2022-09-18 20:11:50 +02:00
clearInterval(this.intervalId);
2022-09-17 20:27:08 +02:00
}
}