mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Add context parameter to some database functions (#26055)
To avoid deadlock problem, almost database related functions should be have ctx as the first parameter. This PR do a refactor for some of these functions.
This commit is contained in:
		| @@ -51,16 +51,16 @@ func listPullRequestStatement(baseRepoID int64, opts *PullRequestsOptions) (*xor | ||||
| } | ||||
|  | ||||
| // GetUnmergedPullRequestsByHeadInfo returns all pull requests that are open and has not been merged | ||||
| func GetUnmergedPullRequestsByHeadInfo(repoID int64, branch string) ([]*PullRequest, error) { | ||||
| func GetUnmergedPullRequestsByHeadInfo(ctx context.Context, repoID int64, branch string) ([]*PullRequest, error) { | ||||
| 	prs := make([]*PullRequest, 0, 2) | ||||
| 	sess := db.GetEngine(db.DefaultContext). | ||||
| 	sess := db.GetEngine(ctx). | ||||
| 		Join("INNER", "issue", "issue.id = pull_request.issue_id"). | ||||
| 		Where("head_repo_id = ? AND head_branch = ? AND has_merged = ? AND issue.is_closed = ? AND flow = ?", repoID, branch, false, false, PullRequestFlowGithub) | ||||
| 	return prs, sess.Find(&prs) | ||||
| } | ||||
|  | ||||
| // CanMaintainerWriteToBranch check whether user is a maintainer and could write to the branch | ||||
| func CanMaintainerWriteToBranch(p access_model.Permission, branch string, user *user_model.User) bool { | ||||
| func CanMaintainerWriteToBranch(ctx context.Context, p access_model.Permission, branch string, user *user_model.User) bool { | ||||
| 	if p.CanWrite(unit.TypeCode) { | ||||
| 		return true | ||||
| 	} | ||||
| @@ -69,18 +69,18 @@ func CanMaintainerWriteToBranch(p access_model.Permission, branch string, user * | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	prs, err := GetUnmergedPullRequestsByHeadInfo(p.Units[0].RepoID, branch) | ||||
| 	prs, err := GetUnmergedPullRequestsByHeadInfo(ctx, p.Units[0].RepoID, branch) | ||||
| 	if err != nil { | ||||
| 		return false | ||||
| 	} | ||||
|  | ||||
| 	for _, pr := range prs { | ||||
| 		if pr.AllowMaintainerEdit { | ||||
| 			err = pr.LoadBaseRepo(db.DefaultContext) | ||||
| 			err = pr.LoadBaseRepo(ctx) | ||||
| 			if err != nil { | ||||
| 				continue | ||||
| 			} | ||||
| 			prPerm, err := access_model.GetUserRepoPermission(db.DefaultContext, pr.BaseRepo, user) | ||||
| 			prPerm, err := access_model.GetUserRepoPermission(ctx, pr.BaseRepo, user) | ||||
| 			if err != nil { | ||||
| 				continue | ||||
| 			} | ||||
| @@ -104,9 +104,9 @@ func HasUnmergedPullRequestsByHeadInfo(ctx context.Context, repoID int64, branch | ||||
|  | ||||
| // GetUnmergedPullRequestsByBaseInfo returns all pull requests that are open and has not been merged | ||||
| // by given base information (repo and branch). | ||||
| func GetUnmergedPullRequestsByBaseInfo(repoID int64, branch string) ([]*PullRequest, error) { | ||||
| func GetUnmergedPullRequestsByBaseInfo(ctx context.Context, repoID int64, branch string) ([]*PullRequest, error) { | ||||
| 	prs := make([]*PullRequest, 0, 2) | ||||
| 	return prs, db.GetEngine(db.DefaultContext). | ||||
| 	return prs, db.GetEngine(ctx). | ||||
| 		Where("base_repo_id=? AND base_branch=? AND has_merged=? AND issue.is_closed=?", | ||||
| 			repoID, branch, false, false). | ||||
| 		OrderBy("issue.updated_unix DESC"). | ||||
| @@ -154,7 +154,7 @@ func PullRequests(baseRepoID int64, opts *PullRequestsOptions) ([]*PullRequest, | ||||
| // PullRequestList defines a list of pull requests | ||||
| type PullRequestList []*PullRequest | ||||
|  | ||||
| func (prs PullRequestList) loadAttributes(ctx context.Context) error { | ||||
| func (prs PullRequestList) LoadAttributes(ctx context.Context) error { | ||||
| 	if len(prs) == 0 { | ||||
| 		return nil | ||||
| 	} | ||||
| @@ -199,8 +199,3 @@ func (prs PullRequestList) GetIssueIDs() []int64 { | ||||
| 	} | ||||
| 	return issueIDs | ||||
| } | ||||
|  | ||||
| // LoadAttributes load all the prs attributes | ||||
| func (prs PullRequestList) LoadAttributes() error { | ||||
| 	return prs.loadAttributes(db.DefaultContext) | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user