/// <summary> /// Updates the pull request data, abandoning or completing it. /// </summary> /// <param name="repositoryId">The repository</param> /// <param name="pullRequestId">The pull request to update</param> /// <param name="status">The new status</param> /// <param name="lastMergeSourceCommitId">The last merge source commit ID (to confirm)</param> /// <returns>The updated pull request</returns> public async Task<PullRequest> UpdatePullRequest(Guid repositoryId, int pullRequestId, PullRequestStatus status, string lastMergeSourceCommitId) { Assert.NotNull(lastMergeSourceCommitId, "lastMergeSourceCommitId"); var request = new TfsRestRequest("/_apis/git/repositories/{RepositoryId}/pullRequests/{PullRequestId}", new HttpMethod("PATCH")); request.AddUrlSegment("RepositoryId", repositoryId.ToString()); request.AddUrlSegment("PullRequestId", pullRequestId.ToString()); request.AddBody(new { status = status.ToString().ToLower(), lastMergeSourceCommit = new { commitId = lastMergeSourceCommitId } }); return await Executor.Execute<PullRequest>(request); }
public async Task UpdateStatus( string organisation, int pullRequestId, PullRequestStatus status) { var table = await _azureStorage.GetTable(PullRequestsTable); var entity = new DynamicTableEntity(organisation.ToLowerInvariant(), pullRequestId.ToString()) { ETag = "*", Properties = { { "Status", new EntityProperty(status.ToString()) } } }; var mergeOperation = TableOperation.Merge(entity); await table.ExecuteAsync(mergeOperation); }
private void UpdatePullRequestWatermark(PullRequestStatus status, TeamProjectReference project) { VssPullRequestWatermarkEntity vssPullRequestWatermarkEntity = new VssPullRequestWatermarkEntity { RowUpdatedDate = Helper.UtcNow, Organization = this.vssClient.OrganizationName, ProjectId = project.Id, ProjectName = project.Name, PullRequestStatus = status.ToString(), }; this.logger.LogInformation("Start ingesting pull request data..."); using VssDbContext context = new VssDbContext(logger, this.sqlConnectionString); int ingestedResult = context.BulkInsertOrUpdate(new List <VssPullRequestWatermarkEntity> { vssPullRequestWatermarkEntity }); this.logger.LogInformation($"Done ingesting {ingestedResult} records"); }
private DateTime GetPullRequestWatermark(TeamProjectReference project, PullRequestStatus status) { // Default by going back to 1 month if no data has been ingested for this repo DateTime mostRecentDate = DateTime.UtcNow.AddMonths(-1); // Get latest ingested date for pull request from pull request watermark table using VssDbContext context = new VssDbContext(logger, this.sqlConnectionString); VssPullRequestWatermarkEntity latestWatermark = context.VssPullRequestWatermarkEntities.Where(v => v.ProjectId == project.Id && v.PullRequestStatus == status.ToString()).FirstOrDefault(); if (latestWatermark != null) { mostRecentDate = latestWatermark.RowUpdatedDate; } return(mostRecentDate); }
public static Uri PullRequestsUri(PullRequestStatus status, int skip) { return(MakeUri(PullRequests, Settings.Default.SourceTfsRepositoryName, status.ToString(), skip)); }