UNPKG

tuain-ecosystem-lib

Version:

Servicio de gestión mensajería instantanea de la plataforma Tuain

61 lines (54 loc) 1.45 kB
const { ObjectId } = require('mongodb'); const { findByName, findById, updateObj, findByAttributes } = require('./common'); const ENV_COLLECTION = 'Environments'; function findRoles(environmentId, objConstraints, searchFields) { const findQuery = findByAttributes(objConstraints, searchFields); if (environmentId) { findQuery.environmentId = ObjectId(environmentId); } return findQuery; } function findRoleRelations(environmentId, relationIds) { const findQuery = {}; if (Array.isArray(relationIds)) { const relationObjIds = relationIds.map(item => ObjectId(item)); Object.assign(findQuery, { _id: { $in: relationObjIds } }); } if (environmentId) { findQuery.environmentId = ObjectId(environmentId); } return findQuery; } function findRoleByName(environmentId, name) { return { environmentId: ObjectId(environmentId), name }; } function findRole(roleId) { const query = [{ $match: { _id: ObjectId(roleId) }, }, { $lookup: { from: ENV_COLLECTION, localField: 'environmentId', foreignField: '_id', as: 'environmentName', }, }, { $addFields: { environmentName: { $arrayElemAt: ['$environmentName', 0] }, }, }, { $addFields: { environmentName: '$environmentName.name' }, }]; return query; } module.exports = { ObjectId, findByName, findById, updateObj, findByAttributes, findRoles, findRole, findRoleRelations, findRoleByName, };