tuain-ecosystem-lib
Version:
Servicio de gestión mensajería instantanea de la plataforma Tuain
111 lines (98 loc) • 2.6 kB
JavaScript
const { ObjectId } = require('mongodb');
const { genericGroups: groupsColl, genericGroupMembers: groupMembersColl } = require('../collections');
const { findByName, findById, updateObj, findByAttributes } = require('./common');
function findGroup(groupId, ownerType, memberType, groupType, name, ownerId) {
let query = {};
if (groupId) {
query = findById(groupId);
} else {
query = { ownerType, memberType, groupType, name, ownerId: ObjectId(ownerId) };
}
return query;
}
function findGroupsByIdsAndData(groupIds, memberType, ownerType, groupType) {
const groupArray = groupIds.map((id) => ObjectId(id));
return {
_id: { $in: groupArray },
memberType,
ownerType,
groupType,
};
}
function newGroup(ownerType, memberType, groupType, name, ownerId) {
return {
ownerType,
memberType,
groupType,
name,
ownerId: ObjectId(ownerId),
creation: new Date(),
};
}
function findGroupByParams(ownerId, ownerType, memberType, groupType, name) {
let query = {};
ownerId && (query.ownerId = ObjectId(ownerId));
ownerType && (query.ownerType = ownerType);
memberType && (query.memberType = memberType);
groupType && (query.groupType = groupType);
name && (query.name = name);
return query;
}
function findGroupByIds(groupIds) {
const idArray = groupIds.map((id) => ObjectId(id));
return { _id: { $in: idArray } };
}
function newMembership(groupId, memberId) {
return {
groupId: ObjectId(`${groupId}`),
memberId: ObjectId(`${memberId}`),
creation: new Date(),
};
}
function newMemberships(groupId, memberIds) {
const objectGroupId = ObjectId(`${groupId}`);
return memberIds.map((memberId) => ({
groupId: objectGroupId,
memberId: ObjectId(`${memberId}`),
creation: new Date(),
}));
}
function findGroupMember(groupId, memberId) {
return {
groupId: ObjectId(`${groupId}`),
memberId: ObjectId(`${memberId}`),
};
}
function findGroupMembers(groupId) {
return {
groupId: ObjectId(`${groupId}`),
};
}
function checkGroupMembers(groupId, memberIds) {
const memberArray = memberIds.map((id) => ObjectId(`${id}`));
return {
groupId: ObjectId(`${groupId}`),
memberId: { $in: memberArray },
};
}
function findMemberGroups(memberId) {
const query = {
memberId: ObjectId(`${memberId}`),
};
return query;
}
module.exports = {
ObjectId,
findById,
findGroup,
findGroupsByIdsAndData,
newGroup,
findGroupByParams,
findGroupByIds,
newMembership,
newMemberships,
findGroupMember,
findGroupMembers,
checkGroupMembers,
findMemberGroups,
};