Remove NewSession method from db.Engine interface (#17577)

* Remove NewSession method from db.Engine interface

* Fix bug

* Some improvements

* Fix bug

* Fix test

* Use XXXBean instead of XXXExample
This commit is contained in:
Lunny Xiao 2021-11-21 23:41:00 +08:00 committed by GitHub
parent 0add627182
commit d710af6669
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
44 changed files with 600 additions and 620 deletions

View file

@ -9,7 +9,6 @@ import (
"code.gitea.io/gitea/modules/structs"
"xorm.io/builder"
"xorm.io/xorm"
)
// InsertMilestones creates milestones of repository.
@ -18,11 +17,12 @@ func InsertMilestones(ms ...*Milestone) (err error) {
return nil
}
sess := db.NewSession(db.DefaultContext)
defer sess.Close()
if err = sess.Begin(); err != nil {
ctx, committer, err := db.TxContext()
if err != nil {
return err
}
defer committer.Close()
sess := db.GetEngine(ctx)
// to return the id, so we should not use batch insert
for _, m := range ms {
@ -31,29 +31,29 @@ func InsertMilestones(ms ...*Milestone) (err error) {
}
}
if _, err = sess.Exec("UPDATE `repository` SET num_milestones = num_milestones + ? WHERE id = ?", len(ms), ms[0].RepoID); err != nil {
if _, err = db.Exec(ctx, "UPDATE `repository` SET num_milestones = num_milestones + ? WHERE id = ?", len(ms), ms[0].RepoID); err != nil {
return err
}
return sess.Commit()
return committer.Commit()
}
// InsertIssues insert issues to database
func InsertIssues(issues ...*Issue) error {
sess := db.NewSession(db.DefaultContext)
defer sess.Close()
if err := sess.Begin(); err != nil {
ctx, committer, err := db.TxContext()
if err != nil {
return err
}
defer committer.Close()
for _, issue := range issues {
if err := insertIssue(sess, issue); err != nil {
if err := insertIssue(db.GetEngine(ctx), issue); err != nil {
return err
}
}
return sess.Commit()
return committer.Commit()
}
func insertIssue(sess *xorm.Session, issue *Issue) error {
func insertIssue(sess db.Engine, issue *Issue) error {
if _, err := sess.NoAutoTime().Insert(issue); err != nil {
return err
}
@ -144,13 +144,13 @@ func InsertIssueComments(comments []*Comment) error {
issueIDs[comment.IssueID] = true
}
sess := db.NewSession(db.DefaultContext)
defer sess.Close()
if err := sess.Begin(); err != nil {
ctx, committer, err := db.TxContext()
if err != nil {
return err
}
defer committer.Close()
for _, comment := range comments {
if _, err := sess.NoAutoTime().Insert(comment); err != nil {
if _, err := db.GetEngine(ctx).NoAutoTime().Insert(comment); err != nil {
return err
}
@ -159,27 +159,28 @@ func InsertIssueComments(comments []*Comment) error {
reaction.CommentID = comment.ID
}
if len(comment.Reactions) > 0 {
if _, err := sess.Insert(comment.Reactions); err != nil {
if err := db.Insert(ctx, comment.Reactions); err != nil {
return err
}
}
}
for issueID := range issueIDs {
if _, err := sess.Exec("UPDATE issue set num_comments = (SELECT count(*) FROM comment WHERE issue_id = ?) WHERE id = ?", issueID, issueID); err != nil {
if _, err := db.Exec(ctx, "UPDATE issue set num_comments = (SELECT count(*) FROM comment WHERE issue_id = ?) WHERE id = ?", issueID, issueID); err != nil {
return err
}
}
return sess.Commit()
return committer.Commit()
}
// InsertPullRequests inserted pull requests
func InsertPullRequests(prs ...*PullRequest) error {
sess := db.NewSession(db.DefaultContext)
defer sess.Close()
if err := sess.Begin(); err != nil {
ctx, committer, err := db.TxContext()
if err != nil {
return err
}
defer committer.Close()
sess := db.GetEngine(ctx)
for _, pr := range prs {
if err := insertIssue(sess, pr.Issue); err != nil {
return err
@ -190,16 +191,17 @@ func InsertPullRequests(prs ...*PullRequest) error {
}
}
return sess.Commit()
return committer.Commit()
}
// InsertReleases migrates release
func InsertReleases(rels ...*Release) error {
sess := db.NewSession(db.DefaultContext)
defer sess.Close()
if err := sess.Begin(); err != nil {
ctx, committer, err := db.TxContext()
if err != nil {
return err
}
defer committer.Close()
sess := db.GetEngine(ctx)
for _, rel := range rels {
if _, err := sess.NoAutoTime().Insert(rel); err != nil {
@ -217,7 +219,7 @@ func InsertReleases(rels ...*Release) error {
}
}
return sess.Commit()
return committer.Commit()
}
func migratedIssueCond(tp structs.GitServiceType) builder.Cond {