public async Task Update(IJiraClient client, DateTime startUpdateDate, string projectKey, ICacheUpdateProgress progress = null) { await EnsureInitialized(); progress = progress ?? new NullCacheUpdateProgres(); if (client == null) { throw new ArgumentNullException(nameof(client)); } if (string.IsNullOrWhiteSpace(projectKey)) { throw new ArgumentNullException(nameof(projectKey)); } DateTime lastUpdateDate = await GetLastUpdateDateTime(projectKey, startUpdateDate); int itemPaging = 0; while (true) { const int queryLimit = 50; IJiraIssue[] updatedIssues = await client.GetIssues(projectKey, lastUpdateDate, queryLimit, itemPaging); foreach (var issue in updatedIssues) { CachedIssue flatIssue = await client.RetrieveDetails(issue); await _repository.AddOrReplaceCachedIssue(flatIssue); progress.UpdatedIssue(flatIssue.Key, flatIssue.Updated.Value); } itemPaging += queryLimit; if (updatedIssues.Length != queryLimit) { break; } } }
public Task UpdateIssues(JiraLoginParameters jiraLoginParameters, string projectKey, ICacheUpdateProgress cacheUpdateProgress, DateTime startUpdateDate) { if (ExpectedLoginParameters != null) { Assert.Equal(ExpectedLoginParameters.JiraUrl, jiraLoginParameters.JiraUrl); Assert.Equal(ExpectedLoginParameters.JiraUsername, jiraLoginParameters.JiraUsername); Assert.Equal(ExpectedLoginParameters.JiraPassword, jiraLoginParameters.JiraPassword); Assert.Equal(ExpectedProjectKey, projectKey); } foreach (var item in IssuesToUpdateWith) { cacheUpdateProgress.UpdatedIssue(item.Key, item.Updated.Value); } _issues.AddRange(IssuesToUpdateWith); IssuesToUpdateWith.Clear(); return(Task.CompletedTask); }