From cf0df023be06c8acec4fc8fb05eab1d1c2e52fd1 Mon Sep 17 00:00:00 2001
From: JakobDev <jakobdev@gmx.de>
Date: Fri, 29 Sep 2023 14:12:54 +0200
Subject: More `db.DefaultContext` refactor (#27265)

Part of #27065

This PR touches functions used in templates. As templates are not static
typed, errors are harder to find, but I hope I catch it all. I think
some tests from other persons do not hurt.
---
 models/project/board.go        | 22 +++++++++++-----------
 models/project/issue.go        | 16 ++++++++--------
 models/project/project.go      | 18 +++++++++---------
 models/project/project_test.go |  4 ++--
 4 files changed, 30 insertions(+), 30 deletions(-)

(limited to 'models/project')

diff --git a/models/project/board.go b/models/project/board.go
index 2ab1d5c7b5..3e2d8e0472 100644
--- a/models/project/board.go
+++ b/models/project/board.go
@@ -69,8 +69,8 @@ func (Board) TableName() string {
 }
 
 // NumIssues return counter of all issues assigned to the board
-func (b *Board) NumIssues() int {
-	c, err := db.GetEngine(db.DefaultContext).Table("project_issue").
+func (b *Board) NumIssues(ctx context.Context) int {
+	c, err := db.GetEngine(ctx).Table("project_issue").
 		Where("project_id=?", b.ProjectID).
 		And("project_board_id=?", b.ID).
 		GroupBy("issue_id").
@@ -142,18 +142,18 @@ func createBoardsForProjectsType(ctx context.Context, project *Project) error {
 }
 
 // NewBoard adds a new project board to a given project
-func NewBoard(board *Board) error {
+func NewBoard(ctx context.Context, board *Board) error {
 	if len(board.Color) != 0 && !BoardColorPattern.MatchString(board.Color) {
 		return fmt.Errorf("bad color code: %s", board.Color)
 	}
 
-	_, err := db.GetEngine(db.DefaultContext).Insert(board)
+	_, err := db.GetEngine(ctx).Insert(board)
 	return err
 }
 
 // DeleteBoardByID removes all issues references to the project board.
-func DeleteBoardByID(boardID int64) error {
-	ctx, committer, err := db.TxContext(db.DefaultContext)
+func DeleteBoardByID(ctx context.Context, boardID int64) error {
+	ctx, committer, err := db.TxContext(ctx)
 	if err != nil {
 		return err
 	}
@@ -265,8 +265,8 @@ func (p *Project) getDefaultBoard(ctx context.Context) (*Board, error) {
 
 // SetDefaultBoard represents a board for issues not assigned to one
 // if boardID is 0 unset default
-func SetDefaultBoard(projectID, boardID int64) error {
-	_, err := db.GetEngine(db.DefaultContext).Where(builder.Eq{
+func SetDefaultBoard(ctx context.Context, projectID, boardID int64) error {
+	_, err := db.GetEngine(ctx).Where(builder.Eq{
 		"project_id": projectID,
 		"`default`":  true,
 	}).Cols("`default`").Update(&Board{Default: false})
@@ -275,7 +275,7 @@ func SetDefaultBoard(projectID, boardID int64) error {
 	}
 
 	if boardID > 0 {
-		_, err = db.GetEngine(db.DefaultContext).ID(boardID).Where(builder.Eq{"project_id": projectID}).
+		_, err = db.GetEngine(ctx).ID(boardID).Where(builder.Eq{"project_id": projectID}).
 			Cols("`default`").Update(&Board{Default: true})
 	}
 
@@ -283,9 +283,9 @@ func SetDefaultBoard(projectID, boardID int64) error {
 }
 
 // UpdateBoardSorting update project board sorting
-func UpdateBoardSorting(bs BoardList) error {
+func UpdateBoardSorting(ctx context.Context, bs BoardList) error {
 	for i := range bs {
-		_, err := db.GetEngine(db.DefaultContext).ID(bs[i].ID).Cols(
+		_, err := db.GetEngine(ctx).ID(bs[i].ID).Cols(
 			"sorting",
 		).Update(bs[i])
 		if err != nil {
diff --git a/models/project/issue.go b/models/project/issue.go
index 3269197d6c..ebc9719de5 100644
--- a/models/project/issue.go
+++ b/models/project/issue.go
@@ -34,8 +34,8 @@ func deleteProjectIssuesByProjectID(ctx context.Context, projectID int64) error
 }
 
 // NumIssues return counter of all issues assigned to a project
-func (p *Project) NumIssues() int {
-	c, err := db.GetEngine(db.DefaultContext).Table("project_issue").
+func (p *Project) NumIssues(ctx context.Context) int {
+	c, err := db.GetEngine(ctx).Table("project_issue").
 		Where("project_id=?", p.ID).
 		GroupBy("issue_id").
 		Cols("issue_id").
@@ -48,8 +48,8 @@ func (p *Project) NumIssues() int {
 }
 
 // NumClosedIssues return counter of closed issues assigned to a project
-func (p *Project) NumClosedIssues() int {
-	c, err := db.GetEngine(db.DefaultContext).Table("project_issue").
+func (p *Project) NumClosedIssues(ctx context.Context) int {
+	c, err := db.GetEngine(ctx).Table("project_issue").
 		Join("INNER", "issue", "project_issue.issue_id=issue.id").
 		Where("project_issue.project_id=? AND issue.is_closed=?", p.ID, true).
 		Cols("issue_id").
@@ -62,8 +62,8 @@ func (p *Project) NumClosedIssues() int {
 }
 
 // NumOpenIssues return counter of open issues assigned to a project
-func (p *Project) NumOpenIssues() int {
-	c, err := db.GetEngine(db.DefaultContext).Table("project_issue").
+func (p *Project) NumOpenIssues(ctx context.Context) int {
+	c, err := db.GetEngine(ctx).Table("project_issue").
 		Join("INNER", "issue", "project_issue.issue_id=issue.id").
 		Where("project_issue.project_id=? AND issue.is_closed=?", p.ID, false).
 		Cols("issue_id").
@@ -76,8 +76,8 @@ func (p *Project) NumOpenIssues() int {
 }
 
 // MoveIssuesOnProjectBoard moves or keeps issues in a column and sorts them inside that column
-func MoveIssuesOnProjectBoard(board *Board, sortedIssueIDs map[int64]int64) error {
-	return db.WithTx(db.DefaultContext, func(ctx context.Context) error {
+func MoveIssuesOnProjectBoard(ctx context.Context, board *Board, sortedIssueIDs map[int64]int64) error {
+	return db.WithTx(ctx, func(ctx context.Context) error {
 		sess := db.GetEngine(ctx)
 
 		issueIDs := make([]int64, 0, len(sortedIssueIDs))
diff --git a/models/project/project.go b/models/project/project.go
index 8056aba252..3a1bfe1dbd 100644
--- a/models/project/project.go
+++ b/models/project/project.go
@@ -124,9 +124,9 @@ func (p *Project) LoadRepo(ctx context.Context) (err error) {
 }
 
 // Link returns the project's relative URL.
-func (p *Project) Link() string {
+func (p *Project) Link(ctx context.Context) string {
 	if p.OwnerID > 0 {
-		err := p.LoadOwner(db.DefaultContext)
+		err := p.LoadOwner(ctx)
 		if err != nil {
 			log.Error("LoadOwner: %v", err)
 			return ""
@@ -134,7 +134,7 @@ func (p *Project) Link() string {
 		return fmt.Sprintf("%s/-/projects/%d", p.Owner.HomeLink(), p.ID)
 	}
 	if p.RepoID > 0 {
-		err := p.LoadRepo(db.DefaultContext)
+		err := p.LoadRepo(ctx)
 		if err != nil {
 			log.Error("LoadRepo: %v", err)
 			return ""
@@ -261,7 +261,7 @@ func FindProjects(ctx context.Context, opts SearchOptions) ([]*Project, int64, e
 }
 
 // NewProject creates a new Project
-func NewProject(p *Project) error {
+func NewProject(ctx context.Context, p *Project) error {
 	if !IsBoardTypeValid(p.BoardType) {
 		p.BoardType = BoardTypeNone
 	}
@@ -274,7 +274,7 @@ func NewProject(p *Project) error {
 		return util.NewInvalidArgumentErrorf("project type is not valid")
 	}
 
-	ctx, committer, err := db.TxContext(db.DefaultContext)
+	ctx, committer, err := db.TxContext(ctx)
 	if err != nil {
 		return err
 	}
@@ -348,8 +348,8 @@ func updateRepositoryProjectCount(ctx context.Context, repoID int64) error {
 }
 
 // ChangeProjectStatusByRepoIDAndID toggles a project between opened and closed
-func ChangeProjectStatusByRepoIDAndID(repoID, projectID int64, isClosed bool) error {
-	ctx, committer, err := db.TxContext(db.DefaultContext)
+func ChangeProjectStatusByRepoIDAndID(ctx context.Context, repoID, projectID int64, isClosed bool) error {
+	ctx, committer, err := db.TxContext(ctx)
 	if err != nil {
 		return err
 	}
@@ -372,8 +372,8 @@ func ChangeProjectStatusByRepoIDAndID(repoID, projectID int64, isClosed bool) er
 }
 
 // ChangeProjectStatus toggle a project between opened and closed
-func ChangeProjectStatus(p *Project, isClosed bool) error {
-	ctx, committer, err := db.TxContext(db.DefaultContext)
+func ChangeProjectStatus(ctx context.Context, p *Project, isClosed bool) error {
+	ctx, committer, err := db.TxContext(ctx)
 	if err != nil {
 		return err
 	}
diff --git a/models/project/project_test.go b/models/project/project_test.go
index d1a4715653..6b5bd5b371 100644
--- a/models/project/project_test.go
+++ b/models/project/project_test.go
@@ -60,7 +60,7 @@ func TestProject(t *testing.T) {
 		CreatorID:   2,
 	}
 
-	assert.NoError(t, NewProject(project))
+	assert.NoError(t, NewProject(db.DefaultContext, project))
 
 	_, err := GetProjectByID(db.DefaultContext, project.ID)
 	assert.NoError(t, err)
@@ -74,7 +74,7 @@ func TestProject(t *testing.T) {
 
 	assert.Equal(t, project.Title, projectFromDB.Title)
 
-	assert.NoError(t, ChangeProjectStatus(project, true))
+	assert.NoError(t, ChangeProjectStatus(db.DefaultContext, project, true))
 
 	// Retrieve from DB afresh to check if it is truly closed
 	projectFromDB, err = GetProjectByID(db.DefaultContext, project.ID)
-- 
cgit v1.2.3