Beispiel #1
0
            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);
        }
Beispiel #3
0
            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()
         },