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); })); }
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; } }
public void VarsSerialization <T>(Expression <Func <T> > expression, string expectedText, string testContextName, TestContext testContext) { //var testContext = new ConverterTestContext(); var retrievedMembers = ExpressionUtilities.GetSimpleMemberAccessStretch (testContext.AnnotationsContext.EntityService, expression.Body, out var val); Assert.True(Utils.Utilities.HasVars(retrievedMembers)); var expressionVisitor = new FunctionExpressionVisitor(testContext.QueryContext); expressionVisitor.Visit(expression.Body); var varText = expressionVisitor.Builder.ToString(); Assert.Equal(expectedText, varText); }