Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        public static List <GroupByClause> PriorGroupBy(AqlModelVisitor modelVisitor)
        {
            List <GroupByClause> clauses = new List <GroupByClause>();

            FindGroupByRecursive(modelVisitor, clauses);

            return(clauses);
        }
Ejemplo n.º 3
0
        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));
        }
Ejemplo n.º 4
0
        public static AqlModelVisitor FindParentModelVisitor(AqlModelVisitor modelVisitor)
        {
            AqlModelVisitor parentModelVisitor = modelVisitor;
            do
            {
                if (parentModelVisitor.ParnetModelVisitor == null)
                    return parentModelVisitor;

                parentModelVisitor = parentModelVisitor.ParnetModelVisitor;
            }
            while (true);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        public static AqlModelVisitor FindParentModelVisitor(AqlModelVisitor modelVisitor)
        {
            AqlModelVisitor parentModelVisitor = modelVisitor;

            do
            {
                if (parentModelVisitor.ParnetModelVisitor == null)
                {
                    return(parentModelVisitor);
                }

                parentModelVisitor = parentModelVisitor.ParnetModelVisitor;
            }while (true);
        }
Ejemplo n.º 7
0
        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);
        }
Ejemplo n.º 8
0
 public AqlExpressionTreeVisitor(AqlModelVisitor modelVisitor)
 {
     this.ModelVisitor = modelVisitor;
 }
Ejemplo n.º 9
0
        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);
        }
Ejemplo n.º 10
0
        public static List<GroupByClause> PriorGroupBy(AqlModelVisitor modelVisitor)
        {
            List<GroupByClause> clauses = new List<GroupByClause>();

            FindGroupByRecursive(modelVisitor, clauses);

            return clauses;
        }