UNPKG

tuain-ecosystem-lib

Version:

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

105 lines (94 loc) 2.92 kB
const { ObjectId } = require('mongodb'); function findByName(name) { return { name }; } function findById(id) { return { _id: ObjectId(`${id}`) }; } function findByAttributes(objConstraints, searchFields) { let findQuery = {}; /** * recordsNumber, pageNumber, includeTotalRows * ordering: [field, order] * simpleFilter: ['', ''] * filtersByValue:[{ field, operator, value}] */ if (objConstraints && objConstraints.simpleFilter) { const textToFind = objConstraints.simpleFilter[0]; const queryRestrictions = []; searchFields.forEach((searchField) => { const fieldQuery = {}; fieldQuery[searchField] = { $regex: textToFind }; queryRestrictions.push(fieldQuery); }); findQuery = { $or: queryRestrictions }; } else if (objConstraints && objConstraints.filtersByValue) { objConstraints.filtersByValue.forEach((fieldFilter) => { const { field, operator, value } = fieldFilter; if (searchFields.includes(field)) { if (operator === '==') { findQuery[field] = value; } } }); } return findQuery; } function updateObj(appData) { const querySet = { ...appData }; Object.entries(querySet).forEach(([key, val]) => { if (val === null || val === undefined) { delete querySet[key]; } }); if (querySet.additionalData) { Object.entries(querySet.additionalData).forEach(([key, val]) => { if (val === null || val === undefined) { return; } if (Array.isArray(val) || typeof val !== 'object' || Object.keys(val).length === 0) { querySet[`additionalData.${key}`] = val; } else if (typeof val === 'object' && Object.keys(val)?.length > 0) { Object.entries(val).forEach(([key2, val2]) => { querySet[`additionalData.${key}.${key2}`] = val2; }); } }); delete querySet.additionalData; } return { $set: { ...querySet } }; } function addExternalRef(objectData) { return { $push: { externalCoding: { ...objectData } } }; } function findByExternalRef(externalSource, externalCode, externalReference = null) { const query = { externalCoding: { externalSource, externalCode } }; if (externalReference) { query.externalCoding.externalReference = externalReference; } return query; } function removeExternalRef(externalSource, externalReference = null) { const query = { externalCoding: { externalSource } }; if (externalReference) { query.externalCoding.externalReference = externalReference; } return { $pull: query }; } function addToArray(arrayName, data) { return { $addToSet: { [arrayName]: data } }; } function removeFromArray(arrayName, identifier) { return { $pull: { [arrayName]: identifier } }; } module.exports = { findByName, findById, updateObj, findByAttributes, addExternalRef, findByExternalRef, removeExternalRef, addToArray, removeFromArray, };