Esempio n. 1
0
        public ArrayExecutionNode BuildEdgesArrayExecutionNode(ExecutionContext context, ExecutionNode node)
        {
            if (node is ObjectExecutionNode objectNode)
            {
                ExecutionStrategy.SetSubFieldNodes(context, objectNode);
                // Reference:
                // https://github.com/graphql-dotnet/graphql-dotnet/blob/master/src/GraphQL/Execution/ExecutionStrategy.cs#L167

                var fields = CollectFields(context, objectNode.GraphType, node.Field.SelectionSet);
                if (fields.ContainsKey("edges"))
                {
                    var edgesField           = fields["edges"];
                    var schema               = context.Schema;
                    var edgesFieldDefinition = GetFieldDefinition(
                        context.Document, schema, objectNode.GetObjectGraphType(schema), edgesField);
                    var edgesNode = ExecutionStrategy.BuildExecutionNode(objectNode, edgesFieldDefinition.ResolvedType, edgesField, edgesFieldDefinition);
                    if (objectNode.Result is Connection <TNode> connection)
                    {
                        if (edgesNode is ArrayExecutionNode edgesArrayNode)
                        {
                            edgesArrayNode.Result = connection.Edges;
                            ExecutionStrategy.SetArrayItemNodes(context, edgesArrayNode);
                            return(edgesArrayNode);
                        }
                    }
                }
            }
            return(null);
        }
Esempio n. 2
0
 public ExecutionNode BuildExecutionNode(ExecutionNode node, IGraphType resolvedType, Field nodeField, FieldType fieldType)
 {
     return(ExecutionStrategy.BuildExecutionNode(
                node,
                resolvedType,
                nodeField,
                fieldType));
 }
Esempio n. 3
0
 public ExecutionNode BuildNodeExecutionNode(ExecutionContext context, ExecutionNode node)
 {
     if (node is ObjectExecutionNode objectExecutionNode)
     {
         var fields = CollectFields(context, node.GraphType, node.Field.SelectionSet);
         if (fields.ContainsKey("node"))
         {
             var nodeField           = fields["node"];
             var schema              = context.Schema;
             var nodeFieldDefinition = GetFieldDefinition(
                 context.Document, schema, objectExecutionNode.GetObjectGraphType(schema), nodeField);
             var nodeNode = ExecutionStrategy.BuildExecutionNode(
                 objectExecutionNode, nodeFieldDefinition.ResolvedType, nodeField, nodeFieldDefinition);
             if (node.Result is Edge <TNode> edgeResult)
             {
                 nodeNode.Result = edgeResult.Node;
             }
             return(nodeNode);
         }
     }
     return(node);
 }