Exemple #1
0
        internal static ICypherFluentQuery <TResult> SharedProjectionQuery <TResult>
            (this ICypherFluentQuery query, LambdaExpression expression, string clause,
            bool isOutputQuery,
            bool applyResultMode = true, bool applyResultFormat = true)
        {
            var queryContext = CypherUtilities.GetQueryContext(query);

            queryContext.CurrentBuildStrategy = queryContext.CurrentBuildStrategy ?? PropertiesBuildStrategy.WithParams;
            var funcVisitor = new FunctionExpressionVisitor(queryContext);
            var result      = ExpressionUtilities.BuildProjectionQueryExpression
                                  (expression, queryContext, funcVisitor, isOutputQuery, out var mode, out var format);

            return(Mutate <TResult>(query, w =>
            {
                if (applyResultMode)
                {
                    w.ResultMode = mode;
                }

                if (applyResultFormat)
                {
                    w.ResultFormat = format;
                }

                w.AppendClause(clause + " " + result);
            }));
        }
Exemple #2
0
        protected AnnotatedQuery(ICypherFluentQuery query, AnnotatedQuery previous) : base(query)
        {
            if (VbCompareReplacerType == null)
            {
                var neo4jClientAssembly = typeof(ICypherFluentQuery).GetTypeInfo().Assembly;
                VbCompareReplacerType = neo4jClientAssembly.GetType("Neo4jClient.Cypher.VbCompareReplacer");
            }

            if (previous == null)
            {
                QueryContext = CypherUtilities.GetQueryContext(query);

                CamelCaseProperties = (bool)query.GetType().GetField("CamelCaseProperties",
                                                                     BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public).GetValue(query);
                FunctionVisitor = new FunctionExpressionVisitor(QueryContext);
            }
            else
            {
                QueryContext = previous.QueryContext;
                QueryContext.CurrentQueryWriter   = QueryWriterGetter(query);
                QueryContext.CurrentBuildStrategy = QueryContext.BuildStrategyGetter(query);

                CamelCaseProperties = previous.CamelCaseProperties;
                var funcsVisitor = previous.FunctionVisitor;
                funcsVisitor.QueryContext = QueryContext;
                FunctionVisitor           = funcsVisitor;
            }

            var context = QueryContext?.AnnotationsContext ?? previous?.AnnotationsContext;

            if (context != null)
            {
                AnnotationsContext = context;
            }
        }