private GraphQLValue CreateVariable(ChainLinkArgument argument, List <GraphQLVariableDefinition> variableDefinitions, Dictionary <string, object> variableValues)
        {
            if (argument.Value == null)
            {
                return(new GraphQLScalarValue(ASTNodeKind.NullValue));
            }

            var variableName = $"var_{variableDefinitions.Count}";
            var variable     = new GraphQLVariable()
            {
                Name = new GraphQLName()
                {
                    Value = variableName
                }
            };

            variableDefinitions.Add(new GraphQLVariableDefinition()
            {
                Variable = variable,
                Type     = new GraphQLNamedType()
                {
                    Name = new GraphQLName()
                    {
                        Value = argument.GraphQLType
                    }
                }
            });

            variableValues.Add(variableName, argument.Value);

            return(variable);
        }
示例#2
0
        public override GraphQLVariable EndVisitVariable(GraphQLVariable variable)
        {
            {
                Tracker.EnterVariable?.Invoke(variable);
            }

            return(base.EndVisitVariable(variable));
        }
示例#3
0
 public virtual GraphQLVariable BeginVisitVariable(GraphQLVariable variable)
 {
     if (variable.Name != null)
     {
         BeginVisitNode(variable.Name);
     }
     return(EndVisitVariable(variable));
 }
示例#4
0
 protected override ValueTask VisitVariableAsync(GraphQLVariable variable, GetVariablesVisitorContext context)
 {
     // GraphQLVariable AST node represents both variable definition and variable usage so check parent node
     if (context.Info.GetAncestor(1) is not GraphQLVariableDefinition)
     {
         context.AddVariableUsage(new VariableUsage(variable, context.Info.GetInputType() !));
     }
     return(default);
示例#5
0
        private VariableUsage CreateUsage(GraphQLVariable variable)
        {
            var type = this.GetLastInputType();

            return(new VariableUsage()
            {
                ArgumentType = type,
                Variable = variable
            });
        }
示例#6
0
        public override GraphQLVariable BeginVisitVariable(GraphQLVariable variable)
        {
            var usage = this.CreateUsage(variable);

            if (usage != null)
            {
                this.variableUsages.Add(usage);
            }

            return(base.BeginVisitVariable(variable));
        }
示例#7
0
 private string PrintVariable(GraphQLVariable variable)
 {
     return($"${variable.Name.Value}");
 }
 /// <summary>
 /// Initializes a new instance with the specified parameters.
 /// </summary>
 /// <param name="node">A variable reference node.</param>
 /// <param name="type">A graph type.</param>
 public VariableUsage(GraphQLVariable node, IGraphType type)
 {
     Node = node;
     Type = type;
 }
示例#9
0
 public virtual GraphQLVariable EndVisitVariable(GraphQLVariable variable) => variable;
示例#10
0
 public virtual GraphQLVariable EndVisitVariable(GraphQLVariable variable)
 {
     return(variable);
 }
 /// <summary>
 /// Initializes a new instance with the specified properties.
 /// </summary>
 public NoUndefinedVariablesError(ValidationContext context, GraphQLOperationDefinition node, GraphQLVariable variableReference)
     : base(context.Document.Source, NUMBER, UndefinedVarMessage(variableReference.Name.StringValue, node.Name?.StringValue), variableReference, node)
 {
 }
示例#12
0
 public Result GetValue(GraphQLVariable value) => this.GetValue(value.Name.Value);
示例#13
0
 public override GraphQLVariable EndVisitVariable(GraphQLVariable variable)
 {
     Tracker.LeaveVariable?.Invoke(variable);
     return(base.EndVisitVariable(variable));
 }
示例#14
0
 public override GraphQLVariable BeginVisitVariable(GraphQLVariable variable)
 {
     Tracker.EnterVariable?.Invoke(variable);
     return(base.BeginVisitVariable(variable));
 }
 public object GetValue(GraphQLVariable value) => this.GetValue(value.Name.Value);