/// <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); }
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); }