From 0a37193ca03b8643a6d13ba738089f6ae72015c6 Mon Sep 17 00:00:00 2001 From: JR40159 <126243293+JR40159@users.noreply.github.com> Date: Wed, 29 Jan 2025 22:34:34 +0000 Subject: [PATCH] Add script --- backend/src/scripts/listDetailsOfMSROs.ts | 40 +++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 backend/src/scripts/listDetailsOfMSROs.ts diff --git a/backend/src/scripts/listDetailsOfMSROs.ts b/backend/src/scripts/listDetailsOfMSROs.ts new file mode 100644 index 000000000..18551afff --- /dev/null +++ b/backend/src/scripts/listDetailsOfMSROs.ts @@ -0,0 +1,40 @@ +import authentication from '../connectors/authentication/index.js' +import ModelModel from '../models/Model.js' +import log from '../services/log.js' +import { connectToMongoose, disconnectFromMongoose } from '../utils/database.js' + +async function script() { + await connectToMongoose() + const models = await ModelModel.find({ collaborators: { $elemMatch: { roles: 'msro' } } }) + const msroInformation: { + [x: string]: { email?: string; models: number } + } = {} + + for (const model of models) { + const modelMSROs = ( + await Promise.all( + model.collaborators + .filter((collaborator) => collaborator.roles.includes('msro')) + .map((collaborator) => collaborator.entity) + .map(async (entity) => { + return await authentication.getEntityMembers(entity) + }), + ) + ).flat() + + for (const entity of modelMSROs) { + if (msroInformation[entity]) { + msroInformation[entity].models++ + } else { + msroInformation[entity] = { + email: (await authentication.getUserInformation(entity)).email, + models: 1, + } + } + } + } + log.info(msroInformation) + setTimeout(disconnectFromMongoose, 50) +} + +script()