diff --git a/appview/db/pulls.go b/appview/db/pulls.go --- a/appview/db/pulls.go +++ b/appview/db/pulls.go @@ -590,12 +590,11 @@ return err } -func ResubmitPull(e Execer, pull *models.Pull, newPatch, sourceRev string) error { - newRoundNumber := len(pull.Submissions) +func ResubmitPull(e Execer, pullAt syntax.ATURI, newRoundNumber int, newPatch string, newSourceRev string) error { _, err := e.Exec(` insert into pull_submissions (pull_at, round_number, patch, source_rev) values (?, ?, ?, ?) - `, pull.PullAt(), newRoundNumber, newPatch, sourceRev) + `, pullAt, newRoundNumber, newPatch, newSourceRev) return err } diff --git a/appview/models/pull.go b/appview/models/pull.go --- a/appview/models/pull.go +++ b/appview/models/pull.go @@ -84,9 +84,13 @@ func (p Pull) AsRecord() tangled.RepoPull { var source *tangled.RepoPull_Source if p.PullSource != nil { - s := p.PullSource.AsRecord() - source = &s + source = &tangled.RepoPull_Source{} + source.Branch = p.PullSource.Branch source.Sha = p.LatestSha() + if p.PullSource.RepoAt != nil { + s := p.PullSource.Repo.RepoAt().String() + source.Repo = &s + } } record := tangled.RepoPull{ @@ -109,19 +113,6 @@ // optionally populate this for reverse mappings Repo *Repo -} - -func (p PullSource) AsRecord() tangled.RepoPull_Source { - var repoAt *string - if p.RepoAt != nil { - s := p.RepoAt.String() - repoAt = &s - } - record := tangled.RepoPull_Source{ - Branch: p.Branch, - Repo: repoAt, - } - return record } type PullSubmission struct { diff --git a/appview/pulls/pulls.go b/appview/pulls/pulls.go --- a/appview/pulls/pulls.go +++ b/appview/pulls/pulls.go @@ -415,11 +415,11 @@ targetBranch := branchResp - latestSourceRev := pull.Submissions[pull.LastRoundNumber()].SourceRev + latestSourceRev := pull.LatestSha() if pull.IsStacked() && stack != nil { top := stack[0] - latestSourceRev = top.Submissions[top.LastRoundNumber()].SourceRev + latestSourceRev = top.LatestSha() } if latestSourceRev != targetBranch.Hash { @@ -1811,7 +1811,7 @@ // validate sourceRev if branch/fork based if pull.IsBranchBased() || pull.IsForkBased() { - if sourceRev == pull.Submissions[pull.LastRoundNumber()].SourceRev { + if sourceRev == pull.LatestSha() { s.pages.Notice(w, "resubmit-error", "This branch has not changed since the last submission.") return } @@ -1825,7 +1825,11 @@ } defer tx.Rollback() - err = db.ResubmitPull(tx, pull, patch, sourceRev) + pullAt := pull.PullAt() + newRoundNumber := len(pull.Submissions) + newPatch := patch + newSourceRev := sourceRev + err = db.ResubmitPull(tx, pullAt, newRoundNumber, newPatch, newSourceRev) if err != nil { log.Println("failed to create pull request", err) s.pages.Notice(w, "resubmit-error", "Failed to create pull request. Try again later.") @@ -2016,10 +2020,12 @@ continue } - submission := np.Submissions[np.LastRoundNumber()] - - // resubmit the old pull - err := db.ResubmitPull(tx, op, submission.Patch, submission.SourceRev) + // resubmit the new pull + pullAt := op.PullAt() + newRoundNumber := len(op.Submissions) + newPatch := np.LatestPatch() + newSourceRev := np.LatestSha() + err := db.ResubmitPull(tx, pullAt, newRoundNumber, newPatch, newSourceRev) if err != nil { log.Println("failed to update pull", err, op.PullId) @@ -2027,8 +2033,7 @@ return } - record := op.AsRecord() - record.Patch = submission.Patch + record := np.AsRecord() writes = append(writes, &comatproto.RepoApplyWrites_Input_Writes_Elem{ RepoApplyWrites_Update: &comatproto.RepoApplyWrites_Update{