/// <summary>
        /// Creates an DistinctDocumentQueryExecutionComponent
        /// </summary>
        /// <param name="executionEnvironment">The environment to execute on.</param>
        /// <param name="queryClient">The query client</param>
        /// <param name="requestContinuation">The continuation token.</param>
        /// <param name="createSourceCallback">The callback to create the source to drain from.</param>
        /// <param name="distinctQueryType">The type of distinct query.</param>
        /// <returns>A task to await on and in return </returns>
        public static async Task <IDocumentQueryExecutionComponent> CreateAsync(
            ExecutionEnvironment executionEnvironment,
            CosmosQueryClient queryClient,
            string requestContinuation,
            Func <string, Task <IDocumentQueryExecutionComponent> > createSourceCallback,
            DistinctQueryType distinctQueryType)
        {
            IDocumentQueryExecutionComponent distinctDocumentQueryExecutionComponent;

            switch (executionEnvironment)
            {
            case ExecutionEnvironment.Client:
                distinctDocumentQueryExecutionComponent = await ClientDistinctDocumentQueryExecutionComponent.CreateAsync(
                    queryClient,
                    requestContinuation,
                    createSourceCallback,
                    distinctQueryType);

                break;

            case ExecutionEnvironment.Compute:
                distinctDocumentQueryExecutionComponent = await ComputeDistinctDocumentQueryExecutionComponent.CreateAsync(
                    queryClient,
                    requestContinuation,
                    createSourceCallback,
                    distinctQueryType);

                break;

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

            return(distinctDocumentQueryExecutionComponent);
        }
Beispiel #2
0
        public static async Task <TryCatch <IDocumentQueryExecutionComponent> > TryCreateAsync(
            ExecutionEnvironment executionEnvironment,
            CosmosElement requestContinuation,
            Func <CosmosElement, Task <TryCatch <IDocumentQueryExecutionComponent> > > tryCreateSourceAsync,
            DistinctQueryType distinctQueryType)
        {
            if (tryCreateSourceAsync == null)
            {
                throw new ArgumentNullException(nameof(tryCreateSourceAsync));
            }

            TryCatch <IDocumentQueryExecutionComponent> tryCreateDistinctDocumentQueryExecutionComponent;

            switch (executionEnvironment)
            {
            case ExecutionEnvironment.Client:
                tryCreateDistinctDocumentQueryExecutionComponent = await ClientDistinctDocumentQueryExecutionComponent.TryCreateAsync(
                    requestContinuation,
                    tryCreateSourceAsync,
                    distinctQueryType);

                break;

            case ExecutionEnvironment.Compute:
                tryCreateDistinctDocumentQueryExecutionComponent = await ComputeDistinctDocumentQueryExecutionComponent.TryCreateAsync(
                    requestContinuation,
                    tryCreateSourceAsync,
                    distinctQueryType);

                break;

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

            return(tryCreateDistinctDocumentQueryExecutionComponent);
        }