join-monster
Version:
A GraphQL to SQL query execution layer for batch data fetching.
23 lines (22 loc) • 1.11 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getAliasKey = getAliasKey;
exports.hasConflictingSiblings = hasConflictingSiblings;
exports.resolveAliasValue = resolveAliasValue;
var _lodash = require("lodash");
const aliasSeparator = '$';
function getAliasKey(fieldName, alias) {
return fieldName + aliasSeparator + (alias || '');
}
const neverConflictingTypes = ['noop', 'column', 'sqlDeps'];
const alwaysConflictingTypes = ['table', 'union'];
function hasConflictingSiblings(node, siblings) {
return !neverConflictingTypes.includes(node.type) && siblings.some(sibling => sibling !== node && sibling.fieldName === node.fieldName && sibling.alias !== node.alias && !neverConflictingTypes.includes(sibling.type) && (alwaysConflictingTypes.includes(sibling.type) || !(0, _lodash.isEqual)(node.args || {}, sibling.args || {})));
}
function resolveAliasValue(args, context, info) {
if (!info.fieldNodes || !info.fieldNodes[0]) return null;
const alias = info.fieldNodes[0].alias && info.fieldNodes[0].alias.value;
return this[getAliasKey(info.fieldName, alias)];
}