mirror of
https://github.com/go-gitea/gitea
synced 2025-07-22 18:28:37 +00:00
Move almost all functions' parameter db.Engine to context.Context (#19748)
* Move almost all functions' parameter db.Engine to context.Context * remove some unnecessary wrap functions
This commit is contained in:
@@ -38,7 +38,7 @@ func init() {
|
||||
}
|
||||
|
||||
// SaveIssueContentHistory save history
|
||||
func SaveIssueContentHistory(e db.Engine, posterID, issueID, commentID int64, editTime timeutil.TimeStamp, contentText string, isFirstCreated bool) error {
|
||||
func SaveIssueContentHistory(ctx context.Context, posterID, issueID, commentID int64, editTime timeutil.TimeStamp, contentText string, isFirstCreated bool) error {
|
||||
ch := &ContentHistory{
|
||||
PosterID: posterID,
|
||||
IssueID: issueID,
|
||||
@@ -47,27 +47,26 @@ func SaveIssueContentHistory(e db.Engine, posterID, issueID, commentID int64, ed
|
||||
EditedUnix: editTime,
|
||||
IsFirstCreated: isFirstCreated,
|
||||
}
|
||||
_, err := e.Insert(ch)
|
||||
if err != nil {
|
||||
if err := db.Insert(ctx, ch); err != nil {
|
||||
log.Error("can not save issue content history. err=%v", err)
|
||||
return err
|
||||
}
|
||||
// We only keep at most 20 history revisions now. It is enough in most cases.
|
||||
// If there is a special requirement to keep more, we can consider introducing a new setting option then, but not now.
|
||||
keepLimitedContentHistory(e, issueID, commentID, 20)
|
||||
keepLimitedContentHistory(ctx, issueID, commentID, 20)
|
||||
return nil
|
||||
}
|
||||
|
||||
// keepLimitedContentHistory keeps at most `limit` history revisions, it will hard delete out-dated revisions, sorting by revision interval
|
||||
// we can ignore all errors in this function, so we just log them
|
||||
func keepLimitedContentHistory(e db.Engine, issueID, commentID int64, limit int) {
|
||||
func keepLimitedContentHistory(ctx context.Context, issueID, commentID int64, limit int) {
|
||||
type IDEditTime struct {
|
||||
ID int64
|
||||
EditedUnix timeutil.TimeStamp
|
||||
}
|
||||
|
||||
var res []*IDEditTime
|
||||
err := e.Select("id, edited_unix").Table("issue_content_history").
|
||||
err := db.GetEngine(ctx).Select("id, edited_unix").Table("issue_content_history").
|
||||
Where(builder.Eq{"issue_id": issueID, "comment_id": commentID}).
|
||||
OrderBy("edited_unix ASC").
|
||||
Find(&res)
|
||||
@@ -96,7 +95,7 @@ func keepLimitedContentHistory(e db.Engine, issueID, commentID int64, limit int)
|
||||
}
|
||||
|
||||
// hard delete the found one
|
||||
_, err = e.Delete(&ContentHistory{ID: res[indexToDelete].ID})
|
||||
_, err = db.GetEngine(ctx).Delete(&ContentHistory{ID: res[indexToDelete].ID})
|
||||
if err != nil {
|
||||
log.Error("can not delete out-dated content history, err=%v", err)
|
||||
break
|
||||
|
@@ -18,18 +18,17 @@ func TestContentHistory(t *testing.T) {
|
||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||
|
||||
dbCtx := db.DefaultContext
|
||||
dbEngine := db.GetEngine(dbCtx)
|
||||
timeStampNow := timeutil.TimeStampNow()
|
||||
|
||||
_ = SaveIssueContentHistory(dbEngine, 1, 10, 0, timeStampNow, "i-a", true)
|
||||
_ = SaveIssueContentHistory(dbEngine, 1, 10, 0, timeStampNow.Add(2), "i-b", false)
|
||||
_ = SaveIssueContentHistory(dbEngine, 1, 10, 0, timeStampNow.Add(7), "i-c", false)
|
||||
_ = SaveIssueContentHistory(dbCtx, 1, 10, 0, timeStampNow, "i-a", true)
|
||||
_ = SaveIssueContentHistory(dbCtx, 1, 10, 0, timeStampNow.Add(2), "i-b", false)
|
||||
_ = SaveIssueContentHistory(dbCtx, 1, 10, 0, timeStampNow.Add(7), "i-c", false)
|
||||
|
||||
_ = SaveIssueContentHistory(dbEngine, 1, 10, 100, timeStampNow, "c-a", true)
|
||||
_ = SaveIssueContentHistory(dbEngine, 1, 10, 100, timeStampNow.Add(5), "c-b", false)
|
||||
_ = SaveIssueContentHistory(dbEngine, 1, 10, 100, timeStampNow.Add(20), "c-c", false)
|
||||
_ = SaveIssueContentHistory(dbEngine, 1, 10, 100, timeStampNow.Add(50), "c-d", false)
|
||||
_ = SaveIssueContentHistory(dbEngine, 1, 10, 100, timeStampNow.Add(51), "c-e", false)
|
||||
_ = SaveIssueContentHistory(dbCtx, 1, 10, 100, timeStampNow, "c-a", true)
|
||||
_ = SaveIssueContentHistory(dbCtx, 1, 10, 100, timeStampNow.Add(5), "c-b", false)
|
||||
_ = SaveIssueContentHistory(dbCtx, 1, 10, 100, timeStampNow.Add(20), "c-c", false)
|
||||
_ = SaveIssueContentHistory(dbCtx, 1, 10, 100, timeStampNow.Add(50), "c-d", false)
|
||||
_ = SaveIssueContentHistory(dbCtx, 1, 10, 100, timeStampNow.Add(51), "c-e", false)
|
||||
|
||||
h1, _ := GetIssueContentHistoryByID(dbCtx, 1)
|
||||
assert.EqualValues(t, 1, h1.ID)
|
||||
@@ -47,7 +46,7 @@ func TestContentHistory(t *testing.T) {
|
||||
Name string
|
||||
FullName string
|
||||
}
|
||||
_ = dbEngine.Sync2(&User{})
|
||||
_ = db.GetEngine(dbCtx).Sync2(&User{})
|
||||
|
||||
list1, _ := FetchIssueContentHistoryList(dbCtx, 10, 0)
|
||||
assert.Len(t, list1, 3)
|
||||
@@ -70,7 +69,7 @@ func TestContentHistory(t *testing.T) {
|
||||
assert.EqualValues(t, 4, h6Prev.ID)
|
||||
|
||||
// only keep 3 history revisions for comment_id=100, the first and the last should never be deleted
|
||||
keepLimitedContentHistory(dbEngine, 10, 100, 3)
|
||||
keepLimitedContentHistory(dbCtx, 10, 100, 3)
|
||||
list1, _ = FetchIssueContentHistoryList(dbCtx, 10, 0)
|
||||
assert.Len(t, list1, 3)
|
||||
list2, _ = FetchIssueContentHistoryList(dbCtx, 10, 100)
|
||||
|
@@ -292,11 +292,11 @@ func DeleteMilestoneByRepoID(repoID, id int64) error {
|
||||
return err
|
||||
}
|
||||
|
||||
numMilestones, err := countRepoMilestones(sess, repo.ID)
|
||||
numMilestones, err := countRepoMilestones(ctx, repo.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
numClosedMilestones, err := countRepoClosedMilestones(sess, repo.ID)
|
||||
numClosedMilestones, err := countRepoClosedMilestones(ctx, repo.ID)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -503,21 +503,21 @@ func GetMilestonesStatsByRepoCondAndKw(repoCond builder.Cond, keyword string) (*
|
||||
return stats, nil
|
||||
}
|
||||
|
||||
func countRepoMilestones(e db.Engine, repoID int64) (int64, error) {
|
||||
return e.
|
||||
func countRepoMilestones(ctx context.Context, repoID int64) (int64, error) {
|
||||
return db.GetEngine(ctx).
|
||||
Where("repo_id=?", repoID).
|
||||
Count(new(Milestone))
|
||||
}
|
||||
|
||||
func countRepoClosedMilestones(e db.Engine, repoID int64) (int64, error) {
|
||||
return e.
|
||||
func countRepoClosedMilestones(ctx context.Context, repoID int64) (int64, error) {
|
||||
return db.GetEngine(ctx).
|
||||
Where("repo_id=? AND is_closed=?", repoID, true).
|
||||
Count(new(Milestone))
|
||||
}
|
||||
|
||||
// CountRepoClosedMilestones returns number of closed milestones in given repository.
|
||||
func CountRepoClosedMilestones(repoID int64) (int64, error) {
|
||||
return countRepoClosedMilestones(db.GetEngine(db.DefaultContext), repoID)
|
||||
return countRepoClosedMilestones(db.DefaultContext, repoID)
|
||||
}
|
||||
|
||||
// CountMilestonesByRepoCond map from repo conditions to number of milestones matching the options`
|
||||
@@ -590,7 +590,7 @@ func updateRepoMilestoneNum(ctx context.Context, repoID int64) error {
|
||||
// |_||_| \__,_|\___|_|\_\___|\__,_| |_| |_|_| |_| |_|\___||___/
|
||||
//
|
||||
|
||||
func (milestones MilestoneList) loadTotalTrackedTimes(e db.Engine) error {
|
||||
func (milestones MilestoneList) loadTotalTrackedTimes(ctx context.Context) error {
|
||||
type totalTimesByMilestone struct {
|
||||
MilestoneID int64
|
||||
Time int64
|
||||
@@ -601,7 +601,7 @@ func (milestones MilestoneList) loadTotalTrackedTimes(e db.Engine) error {
|
||||
trackedTimes := make(map[int64]int64, len(milestones))
|
||||
|
||||
// Get total tracked time by milestone_id
|
||||
rows, err := e.Table("issue").
|
||||
rows, err := db.GetEngine(ctx).Table("issue").
|
||||
Join("INNER", "milestone", "issue.milestone_id = milestone.id").
|
||||
Join("LEFT", "tracked_time", "tracked_time.issue_id = issue.id").
|
||||
Where("tracked_time.deleted = ?", false).
|
||||
@@ -630,13 +630,13 @@ func (milestones MilestoneList) loadTotalTrackedTimes(e db.Engine) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Milestone) loadTotalTrackedTime(e db.Engine) error {
|
||||
func (m *Milestone) loadTotalTrackedTime(ctx context.Context) error {
|
||||
type totalTimesByMilestone struct {
|
||||
MilestoneID int64
|
||||
Time int64
|
||||
}
|
||||
totalTime := &totalTimesByMilestone{MilestoneID: m.ID}
|
||||
has, err := e.Table("issue").
|
||||
has, err := db.GetEngine(ctx).Table("issue").
|
||||
Join("INNER", "milestone", "issue.milestone_id = milestone.id").
|
||||
Join("LEFT", "tracked_time", "tracked_time.issue_id = issue.id").
|
||||
Where("tracked_time.deleted = ?", false).
|
||||
@@ -655,10 +655,10 @@ func (m *Milestone) loadTotalTrackedTime(e db.Engine) error {
|
||||
|
||||
// LoadTotalTrackedTimes loads for every milestone in the list the TotalTrackedTime by a batch request
|
||||
func (milestones MilestoneList) LoadTotalTrackedTimes() error {
|
||||
return milestones.loadTotalTrackedTimes(db.GetEngine(db.DefaultContext))
|
||||
return milestones.loadTotalTrackedTimes(db.DefaultContext)
|
||||
}
|
||||
|
||||
// LoadTotalTrackedTime loads the tracked time for the milestone
|
||||
func (m *Milestone) LoadTotalTrackedTime() error {
|
||||
return m.loadTotalTrackedTime(db.GetEngine(db.DefaultContext))
|
||||
return m.loadTotalTrackedTime(db.DefaultContext)
|
||||
}
|
||||
|
@@ -149,7 +149,7 @@ func TestCountRepoMilestones(t *testing.T) {
|
||||
assert.NoError(t, unittest.PrepareTestDatabase())
|
||||
test := func(repoID int64) {
|
||||
repo := unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: repoID}).(*repo_model.Repository)
|
||||
count, err := countRepoMilestones(db.GetEngine(db.DefaultContext), repoID)
|
||||
count, err := countRepoMilestones(db.DefaultContext, repoID)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, repo.NumMilestones, count)
|
||||
}
|
||||
@@ -157,7 +157,7 @@ func TestCountRepoMilestones(t *testing.T) {
|
||||
test(2)
|
||||
test(3)
|
||||
|
||||
count, err := countRepoMilestones(db.GetEngine(db.DefaultContext), unittest.NonexistentID)
|
||||
count, err := countRepoMilestones(db.DefaultContext, unittest.NonexistentID)
|
||||
assert.NoError(t, err)
|
||||
assert.EqualValues(t, 0, count)
|
||||
}
|
||||
|
Reference in New Issue
Block a user