UNPKG

contexture-mongo

Version:
55 lines (54 loc) 1.39 kB
import _debug from "debug"; let debug = _debug("contexture:mongo"); let revolvingCounter = (max) => { let counter2 = 0; return { inc() { if (counter2 === max) { counter2 = 1; } else { counter2++; } return counter2; } }; }; let counter = revolvingCounter(500); let mongoDSL = async (client, { collection, aggs }, count) => { let Collection = client.collection(collection); if (aggs) { debug("(%s) Collection: %s. Pipeline: %O", count, collection, aggs); let results = await Collection.aggregate(aggs).toArray(); debug("(%s) Response: %O", count, results); return results; } }; let MongoProvider = (config) => ({ groupCombinator: (group, filters) => ({ [`$${group.join === "not" ? "nor" : group.join}`]: filters }), types: config.types, async runSearch(options, node, schema, filters, aggs) { let client = config.getClient(); let request = { request: { // criteria: filters, collection: schema.mongo.collection, aggs: [ { $match: filters || {} }, ...aggs ] } }; node._meta.requests.push(request); let results = await mongoDSL(client, request.request, counter.inc()); request.response = results; return results; } }); var src_default = MongoProvider; export { src_default as default };