private static SqlQuerySpec HandleMethodCallExpression(MethodCallExpression expression)
        {
            if (DocumentQueryEvaluator.IsTransformExpression(expression))
            {
                if (string.Compare(expression.Method.Name, DocumentQueryEvaluator.SQLMethod, StringComparison.Ordinal) == 0)
                {
                    return(DocumentQueryEvaluator.HandleAsSqlTransformExpression(expression));
                }
                else
                {
                    throw new DocumentQueryException(
                              string.Format(CultureInfo.CurrentUICulture,
                                            ClientResources.BadQuery_InvalidExpression,
                                            expression.ToString()));
                }
            }

            if (DocumentQueryEvaluator.IsSupportedMethod(expression))
            {
                return(SqlTranslator.TranslateQuery(expression));
            }

            throw new DocumentQueryException(
                      string.Format(CultureInfo.CurrentUICulture,
                                    ClientResources.BadQuery_InvalidExpression,
                                    expression.ToString()));
        }
        private FeedIterator <T> CreateFeedIterator(bool isContinuationExcpected)
        {
            SqlQuerySpec querySpec = DocumentQueryEvaluator.Evaluate(this.Expression, this.serializationOptions);

            FeedIteratorInternal streamIterator = this.CreateStreamIterator(isContinuationExcpected);

            return(new FeedIteratorInlineCore <T>(new FeedIteratorCore <T>(
                                                      streamIterator,
                                                      this.responseFactory.CreateQueryFeedUserTypeResponse <T>)));
        }
Пример #3
0
        private FeedIterator CreateStreamIterator(bool isContinuationExcpected)
        {
            SqlQuerySpec querySpec = DocumentQueryEvaluator.Evaluate(this.Expression, this.serializationOptions);

            return(this.container.GetItemQueryStreamIteratorInternal(
                       sqlQuerySpec: querySpec,
                       isContinuationExcpected: isContinuationExcpected,
                       continuationToken: this.continuationToken,
                       requestOptions: this.cosmosQueryRequestOptions));
        }
        private FeedIterator <T> CreateFeedIterator(bool isContinuationExcpected)
        {
            SqlQuerySpec querySpec = DocumentQueryEvaluator.Evaluate(this.Expression);

            FeedIterator streamIterator = this.CreateStreamIterator(isContinuationExcpected);

            return(new FeedIteratorCore <T>(
                       streamIterator,
                       this.responseFactory.CreateQueryFeedResponse <T>));
        }
        public override string ToString()
        {
            SqlQuerySpec querySpec = DocumentQueryEvaluator.Evaluate(this.Expression, this.serializationOptions);

            if (querySpec != null)
            {
                return(JsonConvert.SerializeObject(querySpec));
            }

            return(this.container.LinkUri.ToString());
        }
Пример #6
0
        public override string ToString()
        {
            SqlQuerySpec querySpec = DocumentQueryEvaluator.Evaluate(this.expression);

            if (querySpec != null)
            {
                return(JsonConvert.SerializeObject(querySpec));
            }

            return(new Uri(this.client.ServiceEndpoint, this.documentsFeedOrDatabaseLink).ToString());
        }
        public string ToSqlQueryText()
        {
            SqlQuerySpec querySpec = DocumentQueryEvaluator.Evaluate(this.expression);

            if (querySpec != null)
            {
                return(querySpec.QueryText);
            }

            return(container.LinkUri.ToString());
        }
        private FeedIterator <T> CreateFeedIterator(bool isContinuationExcpected)
        {
            SqlQuerySpec querySpec = DocumentQueryEvaluator.Evaluate(this.Expression);

            FeedIterator streamIterator = this.container.GetItemQueryStreamIteratorInternal(
                sqlQuerySpec: querySpec,
                isContinuationExcpected: isContinuationExcpected,
                continuationToken: this.continuationToken,
                requestOptions: this.cosmosQueryRequestOptions);

            return(new FeedIteratorCore <T>(
                       streamIterator,
                       this.responseFactory.CreateQueryFeedResponse <T>));
        }
Пример #9
0
        private CosmosQueryExecutionContext CreateCosmosQueryExecutionContext()
        {
            CosmosQueryExecutionContext cosmosQueryExecution = new CosmosQueryExecutionContextFactory(
                client: this.queryClient,
                resourceTypeEnum: ResourceType.Document,
                operationType: OperationType.Query,
                resourceType: typeof(T),
                sqlQuerySpec: DocumentQueryEvaluator.Evaluate(expression),
                queryRequestOptions: this.cosmosQueryRequestOptions,
                resourceLink: this.container.LinkUri,
                isContinuationExpected: true,
                allowNonValueAggregateQuery: true,
                correlatedActivityId: Guid.NewGuid());

            return(cosmosQueryExecution);
        }
        public static SqlQuerySpec Evaluate(Expression expression)
        {
            switch (expression.NodeType)
            {
            case ExpressionType.Constant:
            {
                return(DocumentQueryEvaluator.HandleEmptyQuery((ConstantExpression)expression));
            }

            case ExpressionType.Call:
            {
                return(DocumentQueryEvaluator.HandleMethodCallExpression((MethodCallExpression)expression));
            }

            default:
                throw new DocumentQueryException(
                          string.Format(CultureInfo.CurrentUICulture,
                                        ClientResources.BadQuery_InvalidExpression,
                                        expression.ToString()));
            }
        }
        private static SqlQuerySpec HandleMethodCallExpression(
            MethodCallExpression expression,
            IDictionary <object, string> parameters,
            CosmosSerializationOptions serializationOptions = null)
        {
            if (DocumentQueryEvaluator.IsTransformExpression(expression))
            {
                if (string.Compare(expression.Method.Name, DocumentQueryEvaluator.SQLMethod, StringComparison.Ordinal) == 0)
                {
                    return(DocumentQueryEvaluator.HandleAsSqlTransformExpression(expression));
                }
                else
                {
                    throw new DocumentQueryException(
                              string.Format(CultureInfo.CurrentUICulture,
                                            ClientResources.BadQuery_InvalidExpression,
                                            expression.ToString()));
                }
            }

            return(SqlTranslator.TranslateQuery(expression, serializationOptions, parameters));
        }
        public static SqlQuerySpec Evaluate(
            Expression expression,
            CosmosSerializationOptions serializationOptions = null,
            IDictionary <object, string> parameters         = null)
        {
            switch (expression.NodeType)
            {
            case ExpressionType.Constant:
            {
                return(DocumentQueryEvaluator.HandleEmptyQuery((ConstantExpression)expression));
            }

            case ExpressionType.Call:
            {
                return(DocumentQueryEvaluator.HandleMethodCallExpression((MethodCallExpression)expression, parameters, serializationOptions));
            }

            default:
                throw new DocumentQueryException(
                          string.Format(CultureInfo.CurrentUICulture,
                                        ClientResources.BadQuery_InvalidExpression,
                                        expression.ToString()));
            }
        }
        public QueryDefinition ToQueryDefinition(IDictionary <object, string> parameters = null)
        {
            SqlQuerySpec querySpec = DocumentQueryEvaluator.Evaluate(this.Expression, this.serializationOptions, parameters);

            return(new QueryDefinition(querySpec));
        }
Пример #14
0
        public QueryDefinition ToQueryDefinition()
        {
            SqlQuerySpec querySpec = DocumentQueryEvaluator.Evaluate(this.Expression, this.serializationOptions);

            return(new QueryDefinition(querySpec));
        }
        public string ToSqlQueryText()
        {
            SqlQuerySpec querySpec = DocumentQueryEvaluator.Evaluate(this.Expression);

            return(querySpec?.QueryText);
        }