예제 #1
0
        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());
        }
예제 #2
0
        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));
        }