UNPKG

tuain-ecosystem-lib

Version:

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

71 lines (64 loc) 1.92 kB
const { ObjectId } = require('mongodb'); const common = require('./common'); function findStoreDevices(storeId, deviceId = null) { const deviceQuery = { storeId: ObjectId(storeId) }; if (deviceId) { Object.assign(deviceQuery, common.findById(deviceId)); } return deviceQuery; } function findDevice(deviceId) { return { ...common.findById(deviceId) }; } function findDevices(deviceIds, storeIds, state, deviceData) { const query = {}; if (Array.isArray(deviceIds)) { const deviceIdsObj = deviceIds.map(item => ObjectId(item)); Object.assign(query, { _id: { $in: deviceIdsObj } }); } if (Array.isArray(storeIds)) { const storeIdsObj = storeIds.map(item => ObjectId(item)); Object.assign(query, { storeId: { $in: storeIdsObj } }); } state && (query.state = state); if (deviceData) { Object.entries(deviceData).forEach(([attrName, attrValue]) => { const attributeName = `deviceData.${attrName}`; if (attrValue) { query[attributeName] = attrValue; } }); } return query; } function addExternalRefAttribute(deviceId, externalSource, externalDetail) { const setObject = {}; // eslint-disable-next-line no-restricted-syntax for (const [key, value] of Object.entries(externalDetail)) { const setKey = `externalCoding.$.externalDetail.${key}`; setObject[setKey] = value; } return [{ _id: ObjectId(deviceId), externalCoding: { $elemMatch: { externalSource } }, }, { $set: setObject }, ]; } function deleteExternalRefAttribute(deviceId, externalSource, externalDetail) { return [{ _id: ObjectId(deviceId), externalCoding: { $elemMatch: { externalSource } }, }, { $unset: { [`externalCoding.$.externalDetail.${externalDetail}`]: '' } }, ]; } module.exports = { ...common, ObjectId, findDevice, findDevices, addExternalRefAttribute, deleteExternalRefAttribute, findStoreDevices, };