Deleted unused e2e tests, mocks (`cuid2`, `jose`, `ml-kem`, `sha3`), and their associated jest configurations. Simplified services by ensuring proper dependency imports, resolving circular references, and improving TypeScript type usage for enhanced maintainability and testability. Upgraded Dockerfile base image to match new development standards.
55 lines
2.0 KiB
TypeScript
55 lines
2.0 KiB
TypeScript
import { Injectable, Logger } from "@nestjs/common";
|
|
import { Cron, CronExpression } from "@nestjs/schedule";
|
|
import { ContentsRepository } from "../../contents/repositories/contents.repository";
|
|
import { ReportsRepository } from "../../reports/repositories/reports.repository";
|
|
import { SessionsRepository } from "../../sessions/repositories/sessions.repository";
|
|
import { UsersRepository } from "../../users/repositories/users.repository";
|
|
|
|
@Injectable()
|
|
export class PurgeService {
|
|
private readonly logger = new Logger(PurgeService.name);
|
|
|
|
constructor(
|
|
private readonly sessionsRepository: SessionsRepository,
|
|
private readonly reportsRepository: ReportsRepository,
|
|
private readonly usersRepository: UsersRepository,
|
|
private readonly contentsRepository: ContentsRepository,
|
|
) {}
|
|
|
|
// Toutes les nuits à minuit
|
|
@Cron(CronExpression.EVERY_DAY_AT_MIDNIGHT)
|
|
async purgeExpiredData() {
|
|
this.logger.log("Starting automatic data purge...");
|
|
|
|
try {
|
|
const now = new Date();
|
|
|
|
// 1. Purge des sessions expirées
|
|
const deletedSessions = await this.sessionsRepository.purgeExpired(now);
|
|
this.logger.log(`Purged ${deletedSessions.length} expired sessions.`);
|
|
|
|
// 2. Purge des signalements obsolètes
|
|
const deletedReports = await this.reportsRepository.purgeObsolete(now);
|
|
this.logger.log(`Purged ${deletedReports.length} obsolete reports.`);
|
|
|
|
// 3. Purge des utilisateurs supprimés (Soft Delete > 30 jours)
|
|
const thirtyDaysAgo = new Date();
|
|
thirtyDaysAgo.setDate(thirtyDaysAgo.getDate() - 30);
|
|
|
|
const deletedUsers = await this.usersRepository.purgeDeleted(thirtyDaysAgo);
|
|
this.logger.log(
|
|
`Purged ${deletedUsers.length} users marked for deletion more than 30 days ago.`,
|
|
);
|
|
|
|
// 4. Purge des contenus supprimés (Soft Delete > 30 jours)
|
|
const deletedContents =
|
|
await this.contentsRepository.purgeSoftDeleted(thirtyDaysAgo);
|
|
this.logger.log(
|
|
`Purged ${deletedContents.length} contents marked for deletion more than 30 days ago.`,
|
|
);
|
|
} catch (error) {
|
|
this.logger.error("Error during data purge", error);
|
|
}
|
|
}
|
|
}
|