Beispiel #1
0
        public static async Task <TryCatch <IDocumentQueryExecutionComponent> > TryCreateAsync(
            ExecutionEnvironment executionEnvironment,
            CosmosElement continuationToken,
            Func <CosmosElement, Task <TryCatch <IDocumentQueryExecutionComponent> > > tryCreateSourceAsync,
            IReadOnlyDictionary <string, AggregateOperator?> groupByAliasToAggregateType,
            IReadOnlyList <string> orderedAliases,
            bool hasSelectValue)
        {
            if (tryCreateSourceAsync == null)
            {
                throw new ArgumentNullException(nameof(tryCreateSourceAsync));
            }

            TryCatch <IDocumentQueryExecutionComponent> tryCreateGroupByComponent;

            switch (executionEnvironment)
            {
            case ExecutionEnvironment.Client:
                tryCreateGroupByComponent = await ClientGroupByDocumentQueryExecutionComponent.TryCreateAsync(
                    continuationToken,
                    tryCreateSourceAsync,
                    groupByAliasToAggregateType,
                    orderedAliases,
                    hasSelectValue);

                break;

            case ExecutionEnvironment.Compute:
                tryCreateGroupByComponent = await ComputeGroupByDocumentQueryExecutionComponent.TryCreateAsync(
                    continuationToken,
                    tryCreateSourceAsync,
                    groupByAliasToAggregateType,
                    orderedAliases,
                    hasSelectValue);

                break;

            default:
                throw new ArgumentException($"Unknown {nameof(ExecutionEnvironment)}: {executionEnvironment}");
            }

            return(tryCreateGroupByComponent);
        }
        public static async Task <IDocumentQueryExecutionComponent> CreateAsync(
            ExecutionEnvironment executionEnvironment,
            CosmosQueryClient cosmosQueryClient,
            string requestContinuation,
            Func <string, Task <IDocumentQueryExecutionComponent> > createSourceCallback,
            IReadOnlyDictionary <string, AggregateOperator?> groupByAliasToAggregateType,
            IReadOnlyList <string> orderedAliases,
            bool hasSelectValue)
        {
            IDocumentQueryExecutionComponent groupByDocumentQueryExecutionComponent;

            switch (executionEnvironment)
            {
            case ExecutionEnvironment.Client:
                groupByDocumentQueryExecutionComponent = await ClientGroupByDocumentQueryExecutionComponent.CreateAsync(
                    cosmosQueryClient,
                    requestContinuation,
                    createSourceCallback,
                    groupByAliasToAggregateType,
                    orderedAliases,
                    hasSelectValue);

                break;

            case ExecutionEnvironment.Compute:
                groupByDocumentQueryExecutionComponent = await ComputeGroupByDocumentQueryExecutionComponent.CreateAsync(
                    cosmosQueryClient,
                    requestContinuation,
                    createSourceCallback,
                    groupByAliasToAggregateType,
                    orderedAliases,
                    hasSelectValue);

                break;

            default:
                throw new ArgumentException($"Unknown {nameof(ExecutionEnvironment)}: {executionEnvironment}.");
            }

            return(groupByDocumentQueryExecutionComponent);
        }