nightscout
Version:
Nightscout acts as a web-based CGM (Continuous Glucose Monitor) to allow multiple caregivers to remotely view a patients glucose data in realtime.
128 lines (99 loc) • 2.63 kB
JavaScript
;
const utils = require('./utils')
;
/**
* Insert single document
* @param {Object} col
* @param {Object} doc
* @param {Object} options
*/
function insertOne (col, doc, options) {
return new Promise(function (resolve, reject) {
col.insertOne(doc, function mongoDone(err, result) {
if (err) {
reject(err);
} else {
const identifier = doc.identifier || result.insertedId.toString();
if (!options || options.normalize !== false) {
delete doc._id;
}
resolve(identifier);
}
});
});
}
/**
* Replace single document
* @param {Object} col
* @param {string} identifier
* @param {Object} doc
*/
function replaceOne (col, identifier, doc) {
return new Promise(function (resolve, reject) {
const filter = utils.filterForOne(identifier);
col.replaceOne(filter, doc, { upsert: true }, function mongoDone(err, result) {
if (err) {
reject(err);
} else {
resolve(result.matchedCount);
}
});
});
}
/**
* Update single document by identifier
* @param {Object} col
* @param {string} identifier
* @param {object} setFields
*/
function updateOne (col, identifier, setFields) {
return new Promise(function (resolve, reject) {
const filter = utils.filterForOne(identifier);
col.updateOne(filter, { $set: setFields }, function mongoDone(err, result) {
if (err) {
reject(err);
} else {
resolve({ updated: result.result.nModified });
}
});
});
}
/**
* Permanently remove single document by identifier
* @param {Object} col
* @param {string} identifier
*/
function deleteOne (col, identifier) {
return new Promise(function (resolve, reject) {
const filter = utils.filterForOne(identifier);
col.deleteOne(filter, function mongoDone(err, result) {
if (err) {
reject(err);
} else {
resolve({ deleted: result.result.n });
}
});
});
}
/**
* Permanently remove many documents matching any of filtering criteria
*/
function deleteManyOr (col, filterDef) {
return new Promise(function (resolve, reject) {
const filter = utils.parseFilter(filterDef, 'or');
col.deleteMany(filter, function mongoDone(err, result) {
if (err) {
reject(err);
} else {
resolve({ deleted: result.deletedCount });
}
});
});
}
module.exports = {
insertOne,
replaceOne,
updateOne,
deleteOne,
deleteManyOr
};