public async Task <IOperationCost> GetActivitiesForAccountAsync(long accountId) { var result = new GroupOperationCost($"GetActivitiesForAccountAsync({accountId})"); await FetchAllMatchingActivities(activity => activity.AccountId == accountId, result); return(result); }
public Task <GroupOperationCost> DoAsync(IStore store, CancellationToken cancellationToken) { List <Task> taskList = new List <Task>(); GroupOperationCost cost = new GroupOperationCost("Save activity"); foreach (var activity in _activities) { var task = store .PersistActivityAsync(activity, cancellationToken) .ContinueWith(t => cost.StepCosts.Add(t.Result), cancellationToken); taskList.Add(task); } return(Task.WhenAll(taskList).ContinueWith(t => cost, cancellationToken)); }
public Task <GroupOperationCost> DoAsync(IStore store, CancellationToken cancellationToken) { return(Task.Run(async() => { var cost = new GroupOperationCost("Aggregate Activities"); foreach (var accountId in NumberRange.ToInts(_config.AccountIds)) { if (cancellationToken.IsCancellationRequested) { break; } var operationCost = await store.GetLatestActivitiesAsync(accountId); cost.StepCosts.Add(operationCost); } return cost; }, cancellationToken)); }
private async Task FetchAllMatchingActivities(Expression <Func <Activity, bool> > selection, GroupOperationCost groupOperationCost) { CosmosClientQueryResult <Activity> page = null; do { page = await FetchPageOfActivities(selection, page?.ContinuationToken); groupOperationCost.StepCosts.Add(page.Cost); }while (page.ContinuationToken != null); }