tuain-ecosystem-lib
Version:
Servicio de gestión mensajería instantanea de la plataforma Tuain
61 lines (54 loc) • 1.45 kB
JavaScript
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,
};