public static GqlQueryNode FromField(FieldType field, VariablesResolver variablesResolver, object variableValuesSource) { var graphType = field.ResolvedType is IProvideResolvedType provideResolvedType ? provideResolvedType.ResolvedType : field.ResolvedType; return(new GqlQueryNode(field.Name, NodeType.Field, graphType, field.Arguments, variablesResolver, variableValuesSource)); }
public string BuildQuery(Expression expression, VariablesResolver variablesResolver, out string entryPoint) { var(root, _) = GetQueryNode(expression, null, true, variablesResolver, null); root.Prune(); entryPoint = root.Name; var query = root.ToQueryString(); return(query); }
public GqlQueryNode(string name, NodeType type, IGraphType graphType, IEnumerable <QueryArgument> arguments, VariablesResolver variablesResolver, object variableValuesSource) { this.type = type; this.arguments = arguments; this.variablesResolver = variablesResolver; this.variableValuesSource = variableValuesSource; Name = name; GraphType = graphType; }
private (GqlQueryNode root, GqlQueryNode head) GetQueryNode(Expression expression, IComplexGraphType owner, bool includeScalar, VariablesResolver variablesResolver, object variablesSource) { return(expression switch { MethodCallExpression methodCall => GetQueryNodeFromMethodCall(methodCall, owner, includeScalar, variablesResolver, variablesSource), ConstantExpression constant => GetQueryNodeFromConstant(constant, includeScalar, variablesResolver, variablesSource), UnaryExpression unary => unary.NodeType switch { ExpressionType.Quote => GetQueryNode(unary.Operand, owner, includeScalar, variablesResolver, variablesSource), _ => throw new NotImplementedException() },