in src/Core/Services/ResolverTypeInterceptor.cs [40:97]
public override void OnBeforeCompleteType(
ITypeCompletionContext completionContext,
DefinitionBase? definition,
IDictionary<string, object?> contextData)
{
// We are only interested in object types here as only object types can have resolvers.
if (definition is not ObjectTypeDefinition objectTypeDef)
{
return;
}
if (completionContext.IsQueryType ?? false)
{
foreach (ObjectFieldDefinition field in objectTypeDef.Fields)
{
field.MiddlewareDefinitions.Add(_queryMiddleware);
}
}
else if (completionContext.IsMutationType ?? false)
{
foreach (ObjectFieldDefinition field in objectTypeDef.Fields)
{
field.MiddlewareDefinitions.Add(_mutationMiddleware);
}
}
else if (completionContext.IsSubscriptionType ?? false)
{
throw new NotSupportedException();
}
else
{
foreach (ObjectFieldDefinition field in objectTypeDef.Fields)
{
if (field.Type is not null &&
completionContext.TryGetType(field.Type, out IType? type))
{
// Do not override a PureResolver when one is already set.
if (field.PureResolver is not null)
{
continue;
}
if (type.IsLeafType())
{
field.PureResolver = _leafFieldResolver;
}
else if (type.IsObjectType())
{
field.PureResolver = _objectFieldResolver;
}
else if (type.IsListType())
{
field.PureResolver = _listFieldResolver;
}
}
}
}
}