UNPKG

graphql-compose-mongoose

Version:

Plugin for `graphql-compose` which derive a graphql types from a mongoose model.

59 lines 2.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.projectionHelper = projectionHelper; exports.dotifyWithAliases = dotifyWithAliases; const graphql_compose_1 = require("graphql-compose"); function projectionHelper(resolveParams, aliases) { const projection = resolveParams.projection; if (projection) { if (projection['*']) { return; } const flatProjection = dotifyWithAliases(projection, aliases); if (Object.keys(flatProjection).length > 0) { resolveParams.query = resolveParams.query.select(flatProjection); } } } function dotifyWithAliases(obj, aliases) { const res = {}; dotifyRecurse(obj, res, aliases); return res; } function dotifyRecurse(obj, res, aliases, prefix) { Object.keys(obj).forEach((key) => { const value = obj[key]; let newKey; if (aliases && (aliases === null || aliases === void 0 ? void 0 : aliases[key])) { const alias = aliases === null || aliases === void 0 ? void 0 : aliases[key]; let aliasValue; if (typeof alias === 'string') { aliasValue = alias; } else if ((0, graphql_compose_1.isObject)(alias)) { aliasValue = alias === null || alias === void 0 ? void 0 : alias.__selfAlias; } newKey = aliasValue || key; } else { newKey = key; } if (prefix) { newKey = `${prefix}.${newKey}`; } if (value && (value.$meta || value.$slice || value.$elemMatch || value.$)) { res[newKey] = value; } else if ((0, graphql_compose_1.isObject)(value) && Object.keys(value).length > 0) { let subAliases; if (aliases && (0, graphql_compose_1.isObject)(aliases === null || aliases === void 0 ? void 0 : aliases[key])) { subAliases = aliases[key]; } dotifyRecurse(value, res, subAliases, newKey); } else { res[newKey] = !!value; } }); } //# sourceMappingURL=projection.js.map