ChilliCream / graphql-platform

Welcome to the home of the Hot Chocolate GraphQL server for .NET, the Strawberry Shake GraphQL client for .NET and Banana Cake Pop the awesome Monaco based GraphQL IDE.
https://chillicream.com
MIT License
5.27k stars 748 forks source link

No way to add reference resolver to interface #7699

Open rdb00 opened 3 weeks ago

rdb00 commented 3 weeks ago

Product

Hot Chocolate

Version

13.6.1

Link to minimal reproduction

https://github.com/ChilliCream/graphql-platform/blob/984e263eb5f71d81c935d343e043f186543ae8e1/src/HotChocolate/Core/src/Types/Types/Descriptors/Contracts/IInterfaceTypeDescriptor.cs#L6

Steps to reproduce

Create a new InterfaceType<> class and create the Configure method. On IInterfaceTypeDescriptor, there is no Key() method to add a key and reference resolver to the interface like there is on IObjectTypeDescriptor.

What is expected?

Because @interfaceObject is supported, I would expect there to be the Key() method to add the key and a reference resolver (which is required to use @interfaceObject).

What is actually happening?

No way to add a reference resolver, resulting in an error from Apollo when attempting to resolve the interface. This would be a feature request if not for the fact that @interfaceObject is supposed to be supported. But maybe there is another way to register a reference resolver to the interface that isn't documented.

Relevant log output

No response

Additional context

No response

jarlef commented 2 weeks ago

Can you just add it manually?

descriptor.Directive(new KeyDirective(fieldName));
rdb00 commented 2 weeks ago

The problem then is registering a reference resolver. KeyInterface also works for getting the directive on the interface, but there's no way to register a reference resolver. I tried using the [ReferenceResolver] way of registering, but that didn't work either. Also I tried this on HC 14 and the same issue seems to be present.