@omnigraph/odata
Version:
27 lines (26 loc) • 1.14 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.createAbstractTypeResolver = createAbstractTypeResolver;
const graphql_1 = require("graphql");
const getTypeNameFromRef_js_1 = require("../utils/getTypeNameFromRef.js");
function createAbstractTypeResolver({ entityTypeName, isAbstract, aliasNamespaceMap, multipleSchemas, namespaces, }) {
return function abstractTypeResolver(root, context, info) {
const typeRef = root['@odata.type']?.replace('#', '');
if (typeRef) {
const typeName = (0, getTypeNameFromRef_js_1.getTypeNameFromRef)({
typeRef: root['@odata.type'].replace('#', ''),
isInput: false,
isRequired: false,
aliasNamespaceMap,
multipleSchemas,
namespaces,
isEnumType(typeName) {
const type = info.schema.getType(typeName);
return (0, graphql_1.isEnumType)(type);
},
});
return typeName;
}
return isAbstract ? `T${entityTypeName}` : entityTypeName;
};
}
;