const db = require('../service/db'); const coll = db.collection('system'); async function get(_id) { const doc = await coll.findOne({ _id }); if (doc) return doc.value; return null; } async function getMany(keys) { const docs = await coll.find({ _id: { $in: keys } }).toArray(); const dict = {}; const res = []; for (const doc of docs) { dict[doc._id] = doc.value; } for (const key of keys) { res.push(dict[key] || null); } return res; } async function update(_id, operation, config) { await coll.findOneAndUpdate({ _id }, operation, config); return get(_id); } async function set(_id, value) { await coll.findOneAndUpdate({ _id }, { $set: { value } }, { upsert: true }); return get(_id); } /** * Increments the counter. * @returns {number} Integer value after increment. */ function inc(field) { return update(field, { $inc: { value: 1 } }, { upsert: true }); } global.Hydro.model.system = module.exports = { get, getMany, update, inc, set, };