UNPKG

graphql-anywhere-mongodb

Version:
80 lines 3.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const util = require("util"); const log_1 = require("./log"); // Helper to print args to mongodb for debug purposes const json = (args) => util.inspect(args, { depth: Infinity, breakLength: Infinity, colors: true }); /** * Executes queries against multiple collections and returns all of their results. * * @param connection The mongodb connection. * @param queryInfos An array of {MongoQueryInfo} to execute. * @return {Promise<GraphQLExecutionResult[]>} The results of running all of the queries. */ function findMultiple(connection, queryInfos) { return tslib_1.__awaiter(this, void 0, void 0, function* () { return yield Promise.all(queryInfos.map(query => findAll(connection, query))); }); } exports.findMultiple = findMultiple; /** * Executes a single findOne query for the passed {MongoQueryInfo}. * @param connection The mongodb connection. * @param queryInfo The query {MongoQueryInfo} to execute. * @return {Promise<GraphQLExecutionResult>} The results of running the query. */ function findOne(connection, queryInfo) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const collection = yield connection.collection(queryInfo.collection); const collectionName = collection.collectionName; try { log_1.log(`Executing ${collectionName}.findOne(${json(queryInfo.query)}, ${json(queryInfo.fields)})`); const document = yield collection.findOne(queryInfo.query, { fields: queryInfo.fields, }); return { collection: collectionName, results: document, error: null, }; } catch (err) { return { collection: collectionName, results: null, error: err, }; } }); } exports.findOne = findOne; function findAll(connection, queryInfo) { return tslib_1.__awaiter(this, void 0, void 0, function* () { const collection = yield connection.collection(queryInfo.collection); const collectionName = collection.collectionName; const hasSort = Object.keys(queryInfo.sort).length > 0; try { log_1.log(`Executing ${collectionName}.find(${json(queryInfo.query)}, ${json(queryInfo.fields)})` + (!hasSort ? '' : `.sort(${json(queryInfo.sort)})`)); const cursor = collection.find(queryInfo.query, queryInfo.fields, queryInfo.skip, queryInfo.limit); const results = hasSort ? yield cursor.sort(queryInfo.sort).toArray() : yield cursor.toArray(); return { collection: collectionName, results: results, error: null, }; } catch (err) { return { collection: collectionName, results: [], error: err, }; } }); } exports.findAll = findAll; //# sourceMappingURL=mongo-queries.js.map