contexture-mongo
Version:
Mongo Provider for Contexture
55 lines (54 loc) • 1.39 kB
JavaScript
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
};