public async Task <List <RoachMilestone> > GetMilestones(RoachRepoId repoId, RoachItemFilter filter = RoachItemFilter.All, CancellationToken cancellationToken = default(CancellationToken)) { var util = FilterUtil.PartitionKey(RoachMilestoneEntity.GetPartitionKey(repoId)); switch (filter) { case RoachItemFilter.All: // Nothing to do: break; case RoachItemFilter.Closed: util = util.And(FilterUtil.Column(nameof(RoachMilestoneEntity.IsOpen), false)); break; case RoachItemFilter.Open: util = util.And(FilterUtil.Column(nameof(RoachMilestoneEntity.IsOpen), true)); break; default: throw new Exception($"Bad enum value {filter}"); } var list = await AzureUtil.QueryAsync <RoachMilestoneEntity>( _milestoneTable, util, cancellationToken); return(list.Select(x => x.Milestone).OrderBy(x => x.Title).ToList()); }
private async Task <List <RoachIssueEntity> > GetIssuesInMilestone(RoachRepoId repoId, int milestone, CancellationToken cancellationToken) { var filter = FilterUtil .PartitionKey(RoachIssueEntity.GetPartitionKey(repoId)) .And(FilterUtil.Column(nameof(RoachIssueEntity.MilestoneNumber), milestone)); return(await AzureUtil.QueryAsync <RoachIssueEntity>(_issueTable, filter, cancellationToken)); }
public static FilterUtil Combine(FilterUtil left, CombineOperator op, FilterUtil right) { var filter = TableQuery.CombineFilters( left.Filter, ToTableOperator(op), right.Filter); return(new FilterUtil(filter)); }
public FilterUtil Or(FilterUtil other) { var filter = TableQuery.CombineFilters( _filter, TableOperators.Or, other.Filter); return(new FilterUtil(filter)); }
public static async Task <List <T> > QueryAsync <T>( CloudTable table, FilterUtil filterUtil, CancellationToken cancellationToken = default(CancellationToken)) where T : ITableEntity, new() { var query = new TableQuery <T>().Where(filterUtil.Filter); return(await QueryAsync(table, query, cancellationToken)); }
private async Task <List <RoachIssueEntity> > GetIssuesInMilestones(RoachRepoId repoId, List <int> milestones, CancellationToken cancellationToken) { if (milestones == null || milestones.Count == 0) { // Return all of the issues return(await AzureUtil.QueryAsync <RoachIssueEntity>(_issueTable, FilterUtil.PartitionKey(RoachIssueEntity.GetPartitionKey(repoId)), cancellationToken)); } var list = new List <RoachIssueEntity>(); foreach (var milestone in milestones) { list.AddRange(await GetIssuesInMilestone(repoId, milestone, cancellationToken)); } return(list); }
/// <summary> /// Query async for a single entity value matching the specified key /// </summary> public static async Task <T> QueryAsync <T>( CloudTable table, EntityKey key, CancellationToken cancellationToken = default(CancellationToken)) where T : class, ITableEntity, new() { var filter = FilterUtil.Key(key); var query = new TableQuery <T>().Where(filter); var segment = await table.ExecuteQuerySegmentedAsync(query, null, cancellationToken); if (segment.Results.Count == 0) { return(null); } return(segment.Results[0]); }
public static TableQuery <T> Where <T>(this TableQuery <T> query, FilterUtil filter) { return(query.Where(filter.Filter)); }
public static FilterUtil Key(EntityKey key) { return(FilterUtil .PartitionKey(key.PartitionKey) .And(FilterUtil.RowKey(key.RowKey))); }