Move db related basic functions to models/db (#17075)

* Move db related basic functions to models/db

* Fix lint

* Fix lint

* Fix test

* Fix lint

* Fix lint

* revert unnecessary change

* Fix test

* Fix wrong replace string

* Use *Context

* Correct committer spelling and fix wrong replaced words

Co-authored-by: zeripath <art27@cantab.net>
This commit is contained in:
Lunny Xiao 2021-09-19 19:49:59 +08:00 committed by GitHub
parent 462306e263
commit a4bfef265d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
335 changed files with 4191 additions and 3654 deletions

View file

@ -8,6 +8,7 @@ import (
"fmt"
"strings"
"code.gitea.io/gitea/models/db"
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/timeutil"
@ -77,7 +78,11 @@ type Review struct {
Comments []*Comment `xorm:"-"`
}
func (r *Review) loadCodeComments(e Engine) (err error) {
func init() {
db.RegisterModel(new(Review))
}
func (r *Review) loadCodeComments(e db.Engine) (err error) {
if r.CodeComments != nil {
return
}
@ -90,10 +95,10 @@ func (r *Review) loadCodeComments(e Engine) (err error) {
// LoadCodeComments loads CodeComments
func (r *Review) LoadCodeComments() error {
return r.loadCodeComments(x)
return r.loadCodeComments(db.DefaultContext().Engine())
}
func (r *Review) loadIssue(e Engine) (err error) {
func (r *Review) loadIssue(e db.Engine) (err error) {
if r.Issue != nil {
return
}
@ -101,7 +106,7 @@ func (r *Review) loadIssue(e Engine) (err error) {
return
}
func (r *Review) loadReviewer(e Engine) (err error) {
func (r *Review) loadReviewer(e db.Engine) (err error) {
if r.ReviewerID == 0 || r.Reviewer != nil {
return
}
@ -109,7 +114,7 @@ func (r *Review) loadReviewer(e Engine) (err error) {
return
}
func (r *Review) loadReviewerTeam(e Engine) (err error) {
func (r *Review) loadReviewerTeam(e db.Engine) (err error) {
if r.ReviewerTeamID == 0 || r.ReviewerTeam != nil {
return
}
@ -120,15 +125,15 @@ func (r *Review) loadReviewerTeam(e Engine) (err error) {
// LoadReviewer loads reviewer
func (r *Review) LoadReviewer() error {
return r.loadReviewer(x)
return r.loadReviewer(db.DefaultContext().Engine())
}
// LoadReviewerTeam loads reviewer team
func (r *Review) LoadReviewerTeam() error {
return r.loadReviewerTeam(x)
return r.loadReviewerTeam(db.DefaultContext().Engine())
}
func (r *Review) loadAttributes(e Engine) (err error) {
func (r *Review) loadAttributes(e db.Engine) (err error) {
if err = r.loadIssue(e); err != nil {
return
}
@ -146,10 +151,10 @@ func (r *Review) loadAttributes(e Engine) (err error) {
// LoadAttributes loads all attributes except CodeComments
func (r *Review) LoadAttributes() error {
return r.loadAttributes(x)
return r.loadAttributes(db.DefaultContext().Engine())
}
func getReviewByID(e Engine, id int64) (*Review, error) {
func getReviewByID(e db.Engine, id int64) (*Review, error) {
review := new(Review)
if has, err := e.ID(id).Get(review); err != nil {
return nil, err
@ -162,7 +167,7 @@ func getReviewByID(e Engine, id int64) (*Review, error) {
// GetReviewByID returns the review by the given ID
func GetReviewByID(id int64) (*Review, error) {
return getReviewByID(x, id)
return getReviewByID(db.DefaultContext().Engine(), id)
}
// FindReviewOptions represent possible filters to find reviews
@ -191,7 +196,7 @@ func (opts *FindReviewOptions) toCond() builder.Cond {
return cond
}
func findReviews(e Engine, opts FindReviewOptions) ([]*Review, error) {
func findReviews(e db.Engine, opts FindReviewOptions) ([]*Review, error) {
reviews := make([]*Review, 0, 10)
sess := e.Where(opts.toCond())
if opts.Page > 0 {
@ -205,12 +210,12 @@ func findReviews(e Engine, opts FindReviewOptions) ([]*Review, error) {
// FindReviews returns reviews passing FindReviewOptions
func FindReviews(opts FindReviewOptions) ([]*Review, error) {
return findReviews(x, opts)
return findReviews(db.DefaultContext().Engine(), opts)
}
// CountReviews returns count of reviews passing FindReviewOptions
func CountReviews(opts FindReviewOptions) (int64, error) {
return x.Where(opts.toCond()).Count(&Review{})
return db.DefaultContext().Engine().Where(opts.toCond()).Count(&Review{})
}
// CreateReviewOptions represent the options to create a review. Type, Issue and Reviewer are required.
@ -227,10 +232,10 @@ type CreateReviewOptions struct {
// IsOfficialReviewer check if at least one of the provided reviewers can make official reviews in issue (counts towards required approvals)
func IsOfficialReviewer(issue *Issue, reviewers ...*User) (bool, error) {
return isOfficialReviewer(x, issue, reviewers...)
return isOfficialReviewer(db.DefaultContext().Engine(), issue, reviewers...)
}
func isOfficialReviewer(e Engine, issue *Issue, reviewers ...*User) (bool, error) {
func isOfficialReviewer(e db.Engine, issue *Issue, reviewers ...*User) (bool, error) {
pr, err := getPullRequestByIssueID(e, issue.ID)
if err != nil {
return false, err
@ -254,10 +259,10 @@ func isOfficialReviewer(e Engine, issue *Issue, reviewers ...*User) (bool, error
// IsOfficialReviewerTeam check if reviewer in this team can make official reviews in issue (counts towards required approvals)
func IsOfficialReviewerTeam(issue *Issue, team *Team) (bool, error) {
return isOfficialReviewerTeam(x, issue, team)
return isOfficialReviewerTeam(db.DefaultContext().Engine(), issue, team)
}
func isOfficialReviewerTeam(e Engine, issue *Issue, team *Team) (bool, error) {
func isOfficialReviewerTeam(e db.Engine, issue *Issue, team *Team) (bool, error) {
pr, err := getPullRequestByIssueID(e, issue.ID)
if err != nil {
return false, err
@ -276,7 +281,7 @@ func isOfficialReviewerTeam(e Engine, issue *Issue, team *Team) (bool, error) {
return base.Int64sContains(pr.ProtectedBranch.ApprovalsWhitelistTeamIDs, team.ID), nil
}
func createReview(e Engine, opts CreateReviewOptions) (*Review, error) {
func createReview(e db.Engine, opts CreateReviewOptions) (*Review, error) {
review := &Review{
Type: opts.Type,
Issue: opts.Issue,
@ -305,10 +310,10 @@ func createReview(e Engine, opts CreateReviewOptions) (*Review, error) {
// CreateReview creates a new review based on opts
func CreateReview(opts CreateReviewOptions) (*Review, error) {
return createReview(x, opts)
return createReview(db.DefaultContext().Engine(), opts)
}
func getCurrentReview(e Engine, reviewer *User, issue *Issue) (*Review, error) {
func getCurrentReview(e db.Engine, reviewer *User, issue *Issue) (*Review, error) {
if reviewer == nil {
return nil, nil
}
@ -330,12 +335,12 @@ func getCurrentReview(e Engine, reviewer *User, issue *Issue) (*Review, error) {
// ReviewExists returns whether a review exists for a particular line of code in the PR
func ReviewExists(issue *Issue, treePath string, line int64) (bool, error) {
return x.Cols("id").Exist(&Comment{IssueID: issue.ID, TreePath: treePath, Line: line, Type: CommentTypeCode})
return db.DefaultContext().Engine().Cols("id").Exist(&Comment{IssueID: issue.ID, TreePath: treePath, Line: line, Type: CommentTypeCode})
}
// GetCurrentReview returns the current pending review of reviewer for given issue
func GetCurrentReview(reviewer *User, issue *Issue) (*Review, error) {
return getCurrentReview(x, reviewer, issue)
return getCurrentReview(db.DefaultContext().Engine(), reviewer, issue)
}
// ContentEmptyErr represents an content empty error
@ -353,7 +358,7 @@ func IsContentEmptyErr(err error) bool {
// SubmitReview creates a review out of the existing pending review or creates a new one if no pending review exist
func SubmitReview(doer *User, issue *Issue, reviewType ReviewType, content, commitID string, stale bool, attachmentUUIDs []string) (*Review, *Comment, error) {
sess := x.NewSession()
sess := db.DefaultContext().NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return nil, nil, err
@ -465,7 +470,7 @@ func SubmitReview(doer *User, issue *Issue, reviewType ReviewType, content, comm
func GetReviewersByIssueID(issueID int64) ([]*Review, error) {
reviews := make([]*Review, 0, 10)
sess := x.NewSession()
sess := db.DefaultContext().NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return nil, err
@ -497,7 +502,7 @@ func GetReviewersFromOriginalAuthorsByIssueID(issueID int64) ([]*Review, error)
reviews := make([]*Review, 0, 10)
// Get latest review of each reviewer, sorted in order they were made
if err := x.SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id = ? AND reviewer_team_id = 0 AND type in (?, ?, ?) AND original_author_id <> 0 GROUP BY issue_id, original_author_id) ORDER BY review.updated_unix ASC",
if err := db.DefaultContext().Engine().SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id = ? AND reviewer_team_id = 0 AND type in (?, ?, ?) AND original_author_id <> 0 GROUP BY issue_id, original_author_id) ORDER BY review.updated_unix ASC",
issueID, ReviewTypeApprove, ReviewTypeReject, ReviewTypeRequest).
Find(&reviews); err != nil {
return nil, err
@ -508,10 +513,10 @@ func GetReviewersFromOriginalAuthorsByIssueID(issueID int64) ([]*Review, error)
// GetReviewByIssueIDAndUserID get the latest review of reviewer for a pull request
func GetReviewByIssueIDAndUserID(issueID, userID int64) (*Review, error) {
return getReviewByIssueIDAndUserID(x, issueID, userID)
return getReviewByIssueIDAndUserID(db.DefaultContext().Engine(), issueID, userID)
}
func getReviewByIssueIDAndUserID(e Engine, issueID, userID int64) (*Review, error) {
func getReviewByIssueIDAndUserID(e db.Engine, issueID, userID int64) (*Review, error) {
review := new(Review)
has, err := e.SQL("SELECT * FROM review WHERE id IN (SELECT max(id) as id FROM review WHERE issue_id = ? AND reviewer_id = ? AND original_author_id = 0 AND type in (?, ?, ?))",
@ -530,10 +535,10 @@ func getReviewByIssueIDAndUserID(e Engine, issueID, userID int64) (*Review, erro
// GetTeamReviewerByIssueIDAndTeamID get the latest review requst of reviewer team for a pull request
func GetTeamReviewerByIssueIDAndTeamID(issueID, teamID int64) (review *Review, err error) {
return getTeamReviewerByIssueIDAndTeamID(x, issueID, teamID)
return getTeamReviewerByIssueIDAndTeamID(db.DefaultContext().Engine(), issueID, teamID)
}
func getTeamReviewerByIssueIDAndTeamID(e Engine, issueID, teamID int64) (review *Review, err error) {
func getTeamReviewerByIssueIDAndTeamID(e db.Engine, issueID, teamID int64) (review *Review, err error) {
review = new(Review)
has := false
@ -552,14 +557,14 @@ func getTeamReviewerByIssueIDAndTeamID(e Engine, issueID, teamID int64) (review
// MarkReviewsAsStale marks existing reviews as stale
func MarkReviewsAsStale(issueID int64) (err error) {
_, err = x.Exec("UPDATE `review` SET stale=? WHERE issue_id=?", true, issueID)
_, err = db.DefaultContext().Engine().Exec("UPDATE `review` SET stale=? WHERE issue_id=?", true, issueID)
return
}
// MarkReviewsAsNotStale marks existing reviews as not stale for a giving commit SHA
func MarkReviewsAsNotStale(issueID int64, commitID string) (err error) {
_, err = x.Exec("UPDATE `review` SET stale=? WHERE issue_id=? AND commit_id=?", false, issueID, commitID)
_, err = db.DefaultContext().Engine().Exec("UPDATE `review` SET stale=? WHERE issue_id=? AND commit_id=?", false, issueID, commitID)
return
}
@ -576,14 +581,14 @@ func DismissReview(review *Review, isDismiss bool) (err error) {
return ErrReviewNotExist{}
}
_, err = x.ID(review.ID).Cols("dismissed").Update(review)
_, err = db.DefaultContext().Engine().ID(review.ID).Cols("dismissed").Update(review)
return
}
// InsertReviews inserts review and review comments
func InsertReviews(reviews []*Review) error {
sess := x.NewSession()
sess := db.DefaultContext().NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
@ -625,7 +630,7 @@ func InsertReviews(reviews []*Review) error {
// AddReviewRequest add a review request from one reviewer
func AddReviewRequest(issue *Issue, reviewer, doer *User) (*Comment, error) {
sess := x.NewSession()
sess := db.DefaultContext().NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return nil, err
@ -679,7 +684,7 @@ func AddReviewRequest(issue *Issue, reviewer, doer *User) (*Comment, error) {
// RemoveReviewRequest remove a review request from one reviewer
func RemoveReviewRequest(issue *Issue, reviewer, doer *User) (*Comment, error) {
sess := x.NewSession()
sess := db.DefaultContext().NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return nil, err
@ -732,7 +737,7 @@ func RemoveReviewRequest(issue *Issue, reviewer, doer *User) (*Comment, error) {
// AddTeamReviewRequest add a review request from one team
func AddTeamReviewRequest(issue *Issue, reviewer *Team, doer *User) (*Comment, error) {
sess := x.NewSession()
sess := db.DefaultContext().NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return nil, err
@ -791,7 +796,7 @@ func AddTeamReviewRequest(issue *Issue, reviewer *Team, doer *User) (*Comment, e
// RemoveTeamReviewRequest remove a review request from one team
func RemoveTeamReviewRequest(issue *Issue, reviewer *Team, doer *User) (*Comment, error) {
sess := x.NewSession()
sess := db.DefaultContext().NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return nil, err
@ -859,7 +864,7 @@ func MarkConversation(comment *Comment, doer *User, isResolve bool) (err error)
return nil
}
if _, err = x.Exec("UPDATE `comment` SET resolve_doer_id=? WHERE id=?", doer.ID, comment.ID); err != nil {
if _, err = db.DefaultContext().Engine().Exec("UPDATE `comment` SET resolve_doer_id=? WHERE id=?", doer.ID, comment.ID); err != nil {
return err
}
} else {
@ -867,7 +872,7 @@ func MarkConversation(comment *Comment, doer *User, isResolve bool) (err error)
return nil
}
if _, err = x.Exec("UPDATE `comment` SET resolve_doer_id=? WHERE id=?", 0, comment.ID); err != nil {
if _, err = db.DefaultContext().Engine().Exec("UPDATE `comment` SET resolve_doer_id=? WHERE id=?", 0, comment.ID); err != nil {
return err
}
}
@ -909,7 +914,7 @@ func CanMarkConversation(issue *Issue, doer *User) (permResult bool, err error)
// DeleteReview delete a review and it's code comments
func DeleteReview(r *Review) error {
sess := x.NewSession()
sess := db.DefaultContext().NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
@ -963,7 +968,7 @@ func (r *Review) GetCodeCommentsCount() int {
conds = conds.And(builder.Eq{"invalidated": false})
}
count, err := x.Where(conds).Count(new(Comment))
count, err := db.DefaultContext().Engine().Where(conds).Count(new(Comment))
if err != nil {
return 0
}
@ -978,7 +983,7 @@ func (r *Review) HTMLURL() string {
ReviewID: r.ID,
}
comment := new(Comment)
has, err := x.Where(opts.toConds()).Get(comment)
has, err := db.DefaultContext().Engine().Where(opts.toConds()).Get(comment)
if err != nil || !has {
return ""
}