示例#1
0
        public virtual IGraphQueryStep Visit(IGraphQueryStep root)
        {
            _token.ThrowIfCancellationRequested();

            switch (root)
            {
            case QueryQueryStep qqs:
                return(VisitQueryQueryStep(qqs));

            case EdgeQueryStep eqs:
                return(VisitEdgeQueryStep(eqs));

            case CollectionDestinationQueryStep cdqs:
                return(VisitCollectionDestinationQueryStep(cdqs));

            case IntersectionQueryStep <Except> iqse:
                return(VisitIntersectionQueryStepExcept(iqse));

            case IntersectionQueryStep <Union> iqsu:
                return(VisitIntersectionQueryStepUnion(iqsu));

            case IntersectionQueryStep <Intersection> iqsi:
                return(VisitIntersectionQueryStepIntersection(iqsi));

            case RecursionQueryStep rqs:
                return(VisitRecursionQueryStep(rqs));

            default:
                throw new NotSupportedException($"Unexpected type {root.GetType().Name} for QueryPlanRewriter.Visit");
            }
        }
示例#2
0
        public virtual async Task VisitAsync(IGraphQueryStep root)
        {
            switch (root)
            {
            case QueryQueryStep qqs:
                VisitQueryQueryStep(qqs);
                return;

            case EdgeQueryStep eqs:
                await VisitEdgeQueryStepAsync(eqs);

                return;

            case CollectionDestinationQueryStep cdqs:
                VisitCollectionDestinationQueryStep(cdqs);
                return;

            case IntersectionQueryStep <Except> iqse:
                await VisitIntersectionQueryStepExceptAsync(iqse);

                return;

            case IntersectionQueryStep <Union> iqsu:
                await VisitIntersectionQueryStepUnionAsync(iqsu);

                return;

            case IntersectionQueryStep <Intersection> iqsi:
                await VisitIntersectionQueryStepIntersectionAsync(iqsi);

                return;

            case RecursionQueryStep rqs:
                await VisitRecursionQueryStepAsync(rqs);

                return;

            default:
                throw new NotSupportedException($"Unexpected type {root.GetType().Name} for QueryPlanVisitor.Visit");
            }
        }