perf: add the Sha of json response for commits and compare API

This commit is contained in:
sulenn 2020-11-01 21:24:21 +08:00
parent 5c94750c07
commit 56d390d20b
2 changed files with 30 additions and 8 deletions

View File

@ -260,6 +260,11 @@ func GetPullFiles(ctx *context.APIContext) {
ctx.JSON(200, diff) ctx.JSON(200, diff)
} }
type PullRequestCommit struct {
models.SignCommitWithStatuses
Sha string
}
func GetPullCommits(ctx *context.APIContext) { func GetPullCommits(ctx *context.APIContext) {
issue := checkPullInfo(ctx.Context) issue := checkPullInfo(ctx.Context)
if issue == nil { if issue == nil {
@ -292,13 +297,16 @@ func GetPullCommits(ctx *context.APIContext) {
commits = models.ValidateCommitsWithEmails(commits) commits = models.ValidateCommitsWithEmails(commits)
commits = models.ParseCommitsWithSignature(commits, ctx.Repo.Repository) commits = models.ParseCommitsWithSignature(commits, ctx.Repo.Repository)
commits = models.ParseCommitsWithStatus(commits, ctx.Repo.Repository) commits = models.ParseCommitsWithStatus(commits, ctx.Repo.Repository)
ctx.Data["Commits"] = commits
ctx.Data["CommitCount"] = commits.Len()
result := make([]models.SignCommitWithStatuses, 0) result := make([]PullRequestCommit, 0)
// result := make([]models.SignCommitWithStatuses, 0)
for commit := commits.Front(); commit != nil; commit = commit.Next() { for commit := commits.Front(); commit != nil; commit = commit.Next() {
temp := commit.Value.(models.SignCommitWithStatuses) temp := commit.Value.(models.SignCommitWithStatuses)
result = append(result, temp) pullRequestCommit := PullRequestCommit{
temp,
temp.ID.String(),
}
result = append(result, pullRequestCommit)
} }
ctx.JSON(200, result) ctx.JSON(200, result)

View File

@ -858,6 +858,12 @@ func SetDiffViewStyle(ctx *context.Context) {
} }
} }
type CompareCommit struct {
*git.Commit
Sha string
ParentShas []string
}
func CompareDiff(ctx *context.APIContext) { func CompareDiff(ctx *context.APIContext) {
headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch := ParseCompareInfo(ctx.Context) headUser, headRepo, headGitRepo, compareInfo, baseBranch, headBranch := ParseCompareInfo(ctx.Context)
if ctx.Written() { if ctx.Written() {
@ -870,15 +876,23 @@ func CompareDiff(ctx *context.APIContext) {
return return
} }
result := make([]*git.Commit, 0) result := make([]CompareCommit, 0)
for commit := compareInfo.Commits.Front(); commit != nil; commit = commit.Next() { for commit := compareInfo.Commits.Front(); commit != nil; commit = commit.Next() {
temp := commit.Value.(*git.Commit) temp := commit.Value.(*git.Commit)
result = append(result, temp) compareCommit := CompareCommit{
temp,
temp.ID.String(),
make([]string, 0),
}
for i := 0; i < len(temp.Parents); i++ {
compareCommit.ParentShas = append(compareCommit.ParentShas, temp.Parents[i].String())
}
result = append(result, compareCommit)
} }
different := struct { different := struct {
Commits []*git.Commit `json: "commits"` Commits []CompareCommit
Diff interface{} `json: "diff"` Diff interface{}
}{} }{}
different.Commits = result different.Commits = result