From 14c7ac33be054e912096b3d94c105ca33f3230dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Auricoste?= Date: Thu, 8 Aug 2024 09:40:56 +0200 Subject: [PATCH] feat: lbac 2368: anonymisation des rdvs (#1406) * feat: lbac 2368: anonymisation des rdvs * fix: renommage fichier --- ...eAppointments.ts => anonymizeAppointments.ts} | 16 +++++++++------- .../jobs/anonymization/anonymizeIndividual.ts | 8 +++++++- server/src/jobs/jobs.ts | 2 +- 3 files changed, 17 insertions(+), 9 deletions(-) rename server/src/jobs/anonymization/{anonumizeAppointments.ts => anonymizeAppointments.ts} (79%) diff --git a/server/src/jobs/anonymization/anonumizeAppointments.ts b/server/src/jobs/anonymization/anonymizeAppointments.ts similarity index 79% rename from server/src/jobs/anonymization/anonumizeAppointments.ts rename to server/src/jobs/anonymization/anonymizeAppointments.ts index 7a44e4046e..1cc6e6edb3 100644 --- a/server/src/jobs/anonymization/anonumizeAppointments.ts +++ b/server/src/jobs/anonymization/anonymizeAppointments.ts @@ -1,17 +1,17 @@ +import { Filter } from "mongodb" +import { IAppointment } from "shared/models" + import { logger } from "../../common/logger" import { getDbCollection } from "../../common/utils/mongodbUtils" import { notifyToSlack } from "../../common/utils/slackUtils" -const anonymizeAppointments = async () => { +export const anonymizeAppointments = async (filter: Filter) => { logger.info(`Début anonymisation`) - const lastYear = new Date() - lastYear.setFullYear(lastYear.getFullYear() - 1) - await getDbCollection("appointments") .aggregate([ { - $match: { created_at: { $lte: lastYear } }, + $match: filter, }, { $project: { @@ -32,7 +32,7 @@ const anonymizeAppointments = async () => { ]) .toArray() - const res = await getDbCollection("appointments").deleteMany({ created_at: { $lte: lastYear } }) + const res = await getDbCollection("appointments").deleteMany(filter) return res.deletedCount } @@ -41,7 +41,9 @@ export const anonymizeOldAppointments = async function () { try { logger.info(" -- Anonymisation des appointments de plus de un (1) an -- ") - const anonymizedAppointmentCount = await anonymizeAppointments() + const lastYear = new Date() + lastYear.setFullYear(lastYear.getFullYear() - 1) + const anonymizedAppointmentCount = await anonymizeAppointments({ created_at: { $lte: lastYear } }) logger.info(`Fin traitement ${anonymizedAppointmentCount}`) diff --git a/server/src/jobs/anonymization/anonymizeIndividual.ts b/server/src/jobs/anonymization/anonymizeIndividual.ts index 1c101b3d05..0664e21811 100644 --- a/server/src/jobs/anonymization/anonymizeIndividual.ts +++ b/server/src/jobs/anonymization/anonymizeIndividual.ts @@ -4,6 +4,8 @@ import { getDbCollection } from "@/common/utils/mongodbUtils" import { logger } from "../../common/logger" +import { anonymizeAppointments } from "./anonymizeAppointments" + const anonimizeUserWithAccount = (_id: ObjectId) => getDbCollection("userswithaccounts") .aggregate([ @@ -137,8 +139,12 @@ export async function anonymizeIndividual({ collection, id }: { collection: stri await anonymizeUserWithAccountAndRecruiter(id) break } - default: + case "appointments": { + await anonymizeAppointments({ _id: id }) break + } + default: + throw new Error(`collection ${collection} unsupported`) } } export default anonymizeIndividual diff --git a/server/src/jobs/jobs.ts b/server/src/jobs/jobs.ts index 7bef8c2a0d..64377b456c 100644 --- a/server/src/jobs/jobs.ts +++ b/server/src/jobs/jobs.ts @@ -5,7 +5,7 @@ import { create as createMigration, status as statusMigration, up as upMigration import { getLoggerWithContext } from "../common/logger" -import anonymizeOldAppointments from "./anonymization/anonumizeAppointments" +import anonymizeOldAppointments from "./anonymization/anonymizeAppointments" import anonymizeIndividual from "./anonymization/anonymizeIndividual" import anonymizeOldApplications from "./anonymization/anonymizeOldApplications" import { anonimizeUsers } from "./anonymization/anonymizeUserRecruteurs"