Skip to content

Commit

Permalink
Fixed async node resolvers (#2493)
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelstaib committed Oct 27, 2020
1 parent f491d2f commit f70c344
Show file tree
Hide file tree
Showing 7 changed files with 11 additions and 35 deletions.
Expand Up @@ -26,7 +26,7 @@ public interface INodeDescriptor : IDescriptor
NodeResolverDelegate<object, TId> fieldResolver);

IObjectFieldDescriptor ResolveNodeWith<TResolver>(
Expression<Func<TResolver, object>> method);
Expression<Func<TResolver, object?>> method);

IObjectFieldDescriptor ResolveNodeWith<TResolver>();

Expand Down
Expand Up @@ -29,7 +29,7 @@ public interface INodeDescriptor<TNode> : IDescriptor
NodeResolverDelegate<object, TId> fieldResolver);

IObjectFieldDescriptor ResolveNodeWith<TResolver>(
Expression<Func<TResolver, TNode>> method);
Expression<Func<TResolver, object?>> method);

IObjectFieldDescriptor ResolveNodeWith<TResolver>();

Expand Down
Expand Up @@ -20,7 +20,7 @@ public interface INodeDescriptor<TNode, out TId> : IDescriptor
NodeResolverDelegate<TNode, TId> fieldResolver);

IObjectFieldDescriptor ResolveNodeWith<TResolver>(
Expression<Func<TResolver, TNode>> method);
Expression<Func<TResolver, object?>> method);

IObjectFieldDescriptor ResolveNodeWith<TResolver>();

Expand Down
Expand Up @@ -76,11 +76,11 @@ public INodeDescriptor IdField(MemberInfo propertyOrMethod)
public IObjectFieldDescriptor ResolveNodeWith<TResolver>() =>
ResolveNodeWith(Context.TypeInspector.GetNodeResolverMethod(
Definition.NodeType ?? typeof(TResolver),
typeof(TResolver)));
typeof(TResolver))!);

public IObjectFieldDescriptor ResolveNodeWith(Type type) =>
ResolveNodeWith(Context.TypeInspector.GetNodeResolverMethod(
Definition.NodeType ?? type,
type));
type)!);
}
}
Expand Up @@ -55,7 +55,7 @@ protected NodeDescriptorBase(IDescriptorContext context)
}

public IObjectFieldDescriptor ResolveNodeWith<TResolver>(
Expression<Func<TResolver, object>> method)
Expression<Func<TResolver, object?>> method)
{
if (method is null)
{
Expand Down
Expand Up @@ -108,38 +108,14 @@ public INodeDescriptor<TNode> IdField(MemberInfo propertyOrMethod)
ResolveNode<TId>(
async (ctx, id) => (await nodeResolver(ctx, id).ConfigureAwait(false))!);

public IObjectFieldDescriptor ResolveNodeWith<TResolver>(
Expression<Func<TResolver, TNode>> method)
{
if (method is null)
{
throw new ArgumentNullException(nameof(method));
}

MemberInfo member = method.TryExtractMember();

if (member is MethodInfo m)
{
FieldResolver resolver =
ResolverCompiler.Resolve.Compile(
new ResolverDescriptor(
typeof(TResolver),
typeof(object),
new FieldMember("_", "_", m)));
return ResolveNode(resolver.Resolver);
}

throw new ArgumentException(NodeDescriptor_MustBeMethod, nameof(member));
}

public IObjectFieldDescriptor ResolveNodeWith<TResolver>() =>
ResolveNodeWith(Context.TypeInspector.GetNodeResolverMethod(
typeof(TNode),
typeof(TResolver)));
typeof(TResolver))!);

public IObjectFieldDescriptor ResolveNodeWith(Type type) =>
ResolveNodeWith(Context.TypeInspector.GetNodeResolverMethod(
typeof(TNode),
type));
type)!);
}
}
Expand Up @@ -57,7 +57,7 @@ public class NodeDescriptor<TNode, TId> : INodeDescriptor<TNode, TId>
});

public IObjectFieldDescriptor ResolveNodeWith<TResolver>(
Expression<Func<TResolver, TNode>> method)
Expression<Func<TResolver, object?>> method)
{
if (method is null)
{
Expand Down Expand Up @@ -102,11 +102,11 @@ public class NodeDescriptor<TNode, TId> : INodeDescriptor<TNode, TId>
public IObjectFieldDescriptor ResolveNodeWith<TResolver>() =>
ResolveNodeWith(Context.TypeInspector.GetNodeResolverMethod(
typeof(TNode),
typeof(TResolver)));
typeof(TResolver))!);

public IObjectFieldDescriptor ResolveNodeWith(Type type) =>
ResolveNodeWith(Context.TypeInspector.GetNodeResolverMethod(
typeof(TNode),
type));
type)!);
}
}

0 comments on commit f70c344

Please sign in to comment.