@omnigraph/odata
Version:
24 lines (23 loc) • 957 B
JavaScript
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;
};
}