mirror of https://github.com/go-gitea/gitea
Support updating pull requests
This commit is contained in:
parent
0932caa18a
commit
5ffadebac6
|
@ -107,7 +107,7 @@ func UpsertIssues(issues ...*issues_model.Issue) error {
|
|||
defer committer.Close()
|
||||
|
||||
for _, issue := range issues {
|
||||
if err := upsertIssue(ctx, issue); err != nil {
|
||||
if _, err := upsertIssue(ctx, issue); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@ -175,18 +175,18 @@ func updateIssue(ctx context.Context, issue *issues_model.Issue) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func upsertIssue(ctx context.Context, issue *issues_model.Issue) error {
|
||||
func upsertIssue(ctx context.Context, issue *issues_model.Issue) (isInsert bool, err error) {
|
||||
sess := db.GetEngine(ctx)
|
||||
|
||||
exists, err := sess.Exist(&issues_model.Issue{ID: issue.ID})
|
||||
if err != nil {
|
||||
return err
|
||||
return false, err
|
||||
}
|
||||
|
||||
if !exists {
|
||||
return insertIssue(ctx, issue)
|
||||
return true, insertIssue(ctx, issue)
|
||||
}
|
||||
return updateIssue(ctx, issue)
|
||||
return false, updateIssue(ctx, issue)
|
||||
}
|
||||
|
||||
// InsertIssueComments inserts many comments of issues.
|
||||
|
@ -250,6 +250,34 @@ func InsertPullRequests(prs ...*issues_model.PullRequest) error {
|
|||
return committer.Commit()
|
||||
}
|
||||
|
||||
// UpsertPullRequests inserts new pull requests and updates existing pull requests in database
|
||||
func UpsertPullRequests(prs ...*issues_model.PullRequest) error {
|
||||
ctx, committer, err := db.TxContext()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer committer.Close()
|
||||
sess := db.GetEngine(ctx)
|
||||
for _, pr := range prs {
|
||||
isInsert, err := upsertIssue(ctx, pr.Issue)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
pr.IssueID = pr.Issue.ID
|
||||
|
||||
if isInsert {
|
||||
if _, err := sess.NoAutoTime().Insert(pr); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
if _, err := sess.NoAutoTime().ID(pr.ID).Update(pr); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return committer.Commit()
|
||||
}
|
||||
|
||||
// InsertReleases migrates release
|
||||
func InsertReleases(rels ...*Release) error {
|
||||
ctx, committer, err := db.TxContext()
|
||||
|
|
|
@ -488,21 +488,29 @@ func (g *GiteaLocalUploader) CreateComments(comments ...*base.Comment) error {
|
|||
return models.InsertIssueComments(cms)
|
||||
}
|
||||
|
||||
// CreatePullRequests creates pull requests
|
||||
func (g *GiteaLocalUploader) CreatePullRequests(prs ...*base.PullRequest) error {
|
||||
func (g *GiteaLocalUploader) preparePullRequests(prs ...*base.PullRequest) ([]*issues_model.PullRequest, error) {
|
||||
gprs := make([]*issues_model.PullRequest, 0, len(prs))
|
||||
for _, pr := range prs {
|
||||
gpr, err := g.newPullRequest(pr)
|
||||
gpr, err := g.getPullRequest(pr)
|
||||
if err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if err := g.remapUser(pr, gpr.Issue); err != nil {
|
||||
return err
|
||||
return nil, err
|
||||
}
|
||||
|
||||
gprs = append(gprs, gpr)
|
||||
}
|
||||
return gprs, nil
|
||||
}
|
||||
|
||||
// CreatePullRequests creates pull requests
|
||||
func (g *GiteaLocalUploader) CreatePullRequests(prs ...*base.PullRequest) error {
|
||||
gprs, err := g.preparePullRequests(prs...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := models.InsertPullRequests(gprs...); err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -617,7 +625,7 @@ func (g *GiteaLocalUploader) updateGitForPullRequest(pr *base.PullRequest) (head
|
|||
return head, nil
|
||||
}
|
||||
|
||||
func (g *GiteaLocalUploader) newPullRequest(pr *base.PullRequest) (*issues_model.PullRequest, error) {
|
||||
func (g *GiteaLocalUploader) getPullRequest(pr *base.PullRequest) (*issues_model.PullRequest, error) {
|
||||
var labels []*issues_model.Label
|
||||
for _, label := range pr.Labels {
|
||||
lb, ok := g.labels[label.Name]
|
||||
|
@ -867,6 +875,17 @@ func (g *GiteaLocalUploader) PatchComments(comments ...*base.Comment) error {
|
|||
}
|
||||
|
||||
func (g *GiteaLocalUploader) PatchPullRequests(prs ...*base.PullRequest) error {
|
||||
gprs, err := g.preparePullRequests(prs...)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if err := models.InsertPullRequests(gprs...); err != nil {
|
||||
return err
|
||||
}
|
||||
for _, pr := range gprs {
|
||||
g.issues[pr.Issue.Index] = pr.Issue
|
||||
pull.AddToTaskQueue(pr)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue