private async Task <Result> ExecuteAsync(WorkerPlan plan, Uri source) { var input = new WorkerPublicInput { UnderlyingQuery = plan.UnderlyingQuery.ToString(), Order = plan.Order.IsSome ? plan.Order.AsT0.ToString() : null, Limit = plan.Limit.IsSome ? plan.Limit.AsT0.ToString() : null, DataLocation = source }; var response = await _lambda.InvokeAsync(new InvokeRequest { FunctionName = _workerFunctionName, InvocationType = InvocationType.RequestResponse, Payload = JsonConvert.SerializeObject(input), }).ConfigureAwait(false); if (!string.IsNullOrEmpty(response.FunctionError)) { throw new WorkerException(response.FunctionError); } using var payload = response.Payload; return(await PublicResult.DeserializeAsync(payload).ConfigureAwait(false)); }
public IAsyncEnumerable <Result> ExecuteAsync(WorkerPlan plan, IReadOnlyList <Uri> sources) { if (ExpectedPlan.IsSome) { Assert.Equal(ExpectedPlan.AsT0, plan); } if (ExpectedSources.IsSome) { Assert.Equal(ExpectedSources.AsT0, sources); } return(_results.ToAsyncEnumerable()); }
private static WorkerInput ConvertInput(WorkerPublicInput input) { var underlyingQuery = Parse(Parser.Query, input.UnderlyingQuery); var order = string.IsNullOrEmpty(input.Order) ? (Option <OrderClause>) new None() : Parse(Parser.OrderByClause, input.Order); var limit = string.IsNullOrEmpty(input.Limit) ? (Option <LimitClause>) new None() : Parse(Parser.LimitClause, input.Limit); var plan = new WorkerPlan(underlyingQuery, order, limit); return(new WorkerInput(plan, input.DataLocation)); }
public IAsyncEnumerable <Result> ExecuteAsync(WorkerPlan plan, IReadOnlyList <Uri> sources) { return(sources.ToAsyncEnumerable().SelectAwait(async source => await _worker.QueryAsync(new WorkerInput(plan, source)).ConfigureAwait(false))); }
public IAsyncEnumerable <Result> ExecuteAsync(WorkerPlan plan, IReadOnlyList <Uri> sources) { return(sources.ToObservable().SelectMany(source => ExecuteAsync(plan, source)).ToAsyncEnumerable()); }
public async Task BasicQuery_ShouldReturnUnderlyingResults() { var plan = new WorkerPlan(Query, new None(), new None()); var underlyingResults = new[]