UNPKG

@omnigraph/odata

Version:
24 lines (23 loc) 957 B
import { isEnumType } from 'graphql'; import { getTypeNameFromRef } from '../utils/getTypeNameFromRef.js'; export function createAbstractTypeResolver({ entityTypeName, isAbstract, aliasNamespaceMap, multipleSchemas, namespaces, }) { return function abstractTypeResolver(root, context, info) { const typeRef = root['@odata.type']?.replace('#', ''); if (typeRef) { const typeName = getTypeNameFromRef({ typeRef: root['@odata.type'].replace('#', ''), isInput: false, isRequired: false, aliasNamespaceMap, multipleSchemas, namespaces, isEnumType(typeName) { const type = info.schema.getType(typeName); return isEnumType(type); }, }); return typeName; } return isAbstract ? `T${entityTypeName}` : entityTypeName; }; }