Exemple #1
0
        public static IObjectTypeDescriptor <T> AsNode <T>(
            this IObjectTypeDescriptor <T> descriptor,
            NodeResolverDelegate <T> nodeResolver)
        {
            if (descriptor == null)
            {
                throw new ArgumentNullException(nameof(descriptor));
            }

            if (nodeResolver == null)
            {
                throw new ArgumentNullException(nameof(nodeResolver));
            }

            return(AsNode(descriptor,
                          sp => new NodeResolver <T>(nodeResolver)));
        }
        public IObjectFieldDescriptor NodeResolver(
            NodeResolverDelegate <TNode, TId> nodeResolver)
        {
            Func <IServiceProvider, INodeResolver> nodeResolverFactory =
                services => new NodeResolver <TNode, TId>(nodeResolver);

            _typeDescriptor
            .Interface <NodeType>()
            .Extend()
            .OnBeforeCreate(c =>
            {
                c.ContextData[RelayConstants.NodeResolverFactory] =
                    nodeResolverFactory;
            });

            return(_typeDescriptor.Field(_propertyOrMethod)
                   .Type <NonNullType <IdType> >());
        }
Exemple #3
0
        public IObjectFieldDescriptor ResolveNode <TId>(
            NodeResolverDelegate <object, TId> fieldResolver)
        {
            if (fieldResolver is null)
            {
                throw new ArgumentNullException(nameof(fieldResolver));
            }

            return(ResolveNode(async ctx =>
            {
                if (ctx.LocalContextData.TryGetValue(
                        WellKnownContextData.InternalId,
                        out object?o) && o is TId id)
                {
                    return await fieldResolver(ctx, id).ConfigureAwait(false);
                }

                return null;
            }));
        }
    public IObjectFieldDescriptor ResolveNode(NodeResolverDelegate <TNode, TId> fieldResolver)
    {
        ITypeConverter?typeConverter = null;

        return(ResolveNode(async ctx =>
        {
            if (ctx.LocalContextData.TryGetValue(WellKnownContextData.InternalId, out var id))
            {
                if (id is TId c)
                {
                    return await fieldResolver(ctx, c).ConfigureAwait(false);
                }

                typeConverter ??= ctx.GetTypeConverter();
                c = typeConverter.Convert <object, TId>(id);
                return await fieldResolver(ctx, c).ConfigureAwait(false);
            }

            return null;
        }));
    }
Exemple #5
0
 public IObjectFieldDescriptor NodeResolver <TId>(
     NodeResolverDelegate <object, TId> nodeResolver) =>
 ResolveNode(nodeResolver);
 public IObjectFieldDescriptor NodeResolver(
     NodeResolverDelegate <TNode, object> nodeResolver) =>
 ResolveNode <object>(
Exemple #7
0
 public NodeResolver(NodeResolverDelegate <TNode> resolver)
 {
     _resolver = resolver
                 ?? throw new ArgumentNullException(nameof(resolver));
 }
 public IObjectFieldDescriptor NodeResolver(NodeResolverDelegate <TNode, TId> nodeResolver) =>
 ResolveNode(nodeResolver);
 public IObjectFieldDescriptor NodeResolver(
     NodeResolverDelegate <TNode, object> nodeResolver)
 {
     return(NodeResolver <object>(nodeResolver));
 }
 public IObjectFieldDescriptor ResolveNode(
     NodeResolverDelegate <TNode, TId> fieldResolver) =>
 ResolveNode(async ctx =>