UNPKG

@tracking-exposed/data

Version:
75 lines (60 loc) 1.72 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = exports.findByMember = exports.addToSet = exports.upsertOne = exports.findOneBy = exports.client = void 0; var _mongodb = require("mongodb"); // FIXME: flow's type definition for mongodb inject any for all mongodb // operations. Verify any return from any mongodb operation. const client = (() => { let cache; const fn = async connectionString => { if (cache != null) return cache; cache = await _mongodb.MongoClient.connect(connectionString); return cache; }; fn.reset = async () => { if (cache == null) return; await cache.close(); cache = null; }; return fn; })(); exports.client = client; const findOneBy = (mongo, collection, query) => mongo.db().collection(collection).findOne(query, { projection: { _id: 0 } }); exports.findOneBy = findOneBy; const upsertOne = (mongo, collection, query, data) => mongo.db().collection(collection).updateOne(query, { $set: data }, { upsert: true }); exports.upsertOne = upsertOne; const addToSet = (mongo, collection, query, field, values) => mongo.db().collection(collection).updateOne(query, { $addToSet: { [field]: { $each: Array.isArray(values) ? values : [values] } } }); exports.addToSet = addToSet; const findByMember = (mongo, collection, field, members) => mongo.db().collection(collection).find({ [field]: { $all: Array.isArray(members) ? members : [members] } }, { _id: 0 }).limit(100).toArray(); exports.findByMember = findByMember; var _default = { client, findOneBy, upsertOne, addToSet, findByMember }; exports.default = _default; //# sourceMappingURL=mongo.js.map