protected override Expression VisitSubQueryExpression(SubQueryExpression expression) { if (!HandleJoin && !HandleLet) { ModelVisitor.QueryText.Append(" ( "); } var visitor = new AqlModelVisitor(ModelVisitor.Db); if (HandleLet) { visitor.DefaultAssociatedIdentifier = QueryModel.MainFromClause.ItemName; } visitor.QueryText = this.ModelVisitor.QueryText; visitor.ParnetModelVisitor = this.ModelVisitor; visitor.IgnoreFromClause = HandleLet; visitor.VisitQueryModel(expression.QueryModel); if (!HandleJoin && !HandleLet) { ModelVisitor.QueryText.Append(" ) "); } return(expression); }
public static List <GroupByClause> PriorGroupBy(AqlModelVisitor modelVisitor) { List <GroupByClause> clauses = new List <GroupByClause>(); FindGroupByRecursive(modelVisitor, clauses); return(clauses); }
ICursor <T> GetCursor <T>(QueryModel queryModel) { var visitor = new AqlModelVisitor(db); visitor.VisitQueryModel(queryModel); visitor.QueryData.Query = visitor.QueryText.ToString(); return(db.CreateStatement <T>(visitor.QueryData.Query, bindVars: visitor.QueryData.BindVars)); }
public static AqlModelVisitor FindParentModelVisitor(AqlModelVisitor modelVisitor) { AqlModelVisitor parentModelVisitor = modelVisitor; do { if (parentModelVisitor.ParnetModelVisitor == null) return parentModelVisitor; parentModelVisitor = parentModelVisitor.ParnetModelVisitor; } while (true); }
public QueryData GetQueryData(Expression expression) { CheckNotNull("expression", expression); var queryModel = GenerateQueryModel(expression); var visitor = new AqlModelVisitor(db); visitor.VisitQueryModel(queryModel); visitor.QueryData.Query = visitor.QueryText.ToString(); return(visitor.QueryData); }
public static AqlModelVisitor FindParentModelVisitor(AqlModelVisitor modelVisitor) { AqlModelVisitor parentModelVisitor = modelVisitor; do { if (parentModelVisitor.ParnetModelVisitor == null) { return(parentModelVisitor); } parentModelVisitor = parentModelVisitor.ParnetModelVisitor; }while (true); }
static void FindGroupByRecursive(AqlModelVisitor modelVisitor, List <GroupByClause> clauses) { if (modelVisitor == null) { return; } var groupByClauses = modelVisitor.QueryModel.BodyClauses.Where(x => x is GroupByClause).Select(x => x as GroupByClause).Where(x => x.Visited); foreach (var g in groupByClauses) { clauses.Add(g); if (!g.GroupOnLastGroup) { return; } } FindGroupByRecursive(modelVisitor.ParnetModelVisitor, clauses); }
public AqlExpressionTreeVisitor(AqlModelVisitor modelVisitor) { this.ModelVisitor = modelVisitor; }
static void FindGroupByRecursive(AqlModelVisitor modelVisitor,List<GroupByClause> clauses) { if (modelVisitor == null) return; var groupByClauses = modelVisitor.QueryModel.BodyClauses.Where(x => x is GroupByClause).Select(x=>x as GroupByClause).Where(x=>x.Visited); foreach(var g in groupByClauses) { clauses.Add(g); if (!g.GroupOnLastGroup) return; } FindGroupByRecursive(modelVisitor.ParnetModelVisitor, clauses); }
public static List<GroupByClause> PriorGroupBy(AqlModelVisitor modelVisitor) { List<GroupByClause> clauses = new List<GroupByClause>(); FindGroupByRecursive(modelVisitor, clauses); return clauses; }