mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 21:28:11 +09:00 
			
		
		
		
	Only query team tables if repository is under org when getting assignees (#32414)
It's unnecessary to query the team table if the repository is not under organization when getting assignees.
This commit is contained in:
		| @@ -110,26 +110,28 @@ func GetRepoAssignees(ctx context.Context, repo *Repository) (_ []*user_model.Us | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	additionalUserIDs := make([]int64, 0, 10) | ||||
| 	if err = e.Table("team_user"). | ||||
| 		Join("INNER", "team_repo", "`team_repo`.team_id = `team_user`.team_id"). | ||||
| 		Join("INNER", "team_unit", "`team_unit`.team_id = `team_user`.team_id"). | ||||
| 		Where("`team_repo`.repo_id = ? AND (`team_unit`.access_mode >= ? OR (`team_unit`.access_mode = ? AND `team_unit`.`type` = ?))", | ||||
| 			repo.ID, perm.AccessModeWrite, perm.AccessModeRead, unit.TypePullRequests). | ||||
| 		Distinct("`team_user`.uid"). | ||||
| 		Select("`team_user`.uid"). | ||||
| 		Find(&additionalUserIDs); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	uniqueUserIDs := make(container.Set[int64]) | ||||
| 	uniqueUserIDs.AddMultiple(userIDs...) | ||||
| 	uniqueUserIDs.AddMultiple(additionalUserIDs...) | ||||
|  | ||||
| 	if repo.Owner.IsOrganization() { | ||||
| 		additionalUserIDs := make([]int64, 0, 10) | ||||
| 		if err = e.Table("team_user"). | ||||
| 			Join("INNER", "team_repo", "`team_repo`.team_id = `team_user`.team_id"). | ||||
| 			Join("INNER", "team_unit", "`team_unit`.team_id = `team_user`.team_id"). | ||||
| 			Where("`team_repo`.repo_id = ? AND (`team_unit`.access_mode >= ? OR (`team_unit`.access_mode = ? AND `team_unit`.`type` = ?))", | ||||
| 				repo.ID, perm.AccessModeWrite, perm.AccessModeRead, unit.TypePullRequests). | ||||
| 			Distinct("`team_user`.uid"). | ||||
| 			Select("`team_user`.uid"). | ||||
| 			Find(&additionalUserIDs); err != nil { | ||||
| 			return nil, err | ||||
| 		} | ||||
| 		uniqueUserIDs.AddMultiple(additionalUserIDs...) | ||||
| 	} | ||||
|  | ||||
| 	// Leave a seat for owner itself to append later, but if owner is an organization | ||||
| 	// and just waste 1 unit is cheaper than re-allocate memory once. | ||||
| 	users := make([]*user_model.User, 0, len(uniqueUserIDs)+1) | ||||
| 	if len(userIDs) > 0 { | ||||
| 	if len(uniqueUserIDs) > 0 { | ||||
| 		if err = e.In("id", uniqueUserIDs.Values()). | ||||
| 			Where(builder.Eq{"`user`.is_active": true}). | ||||
| 			OrderBy(user_model.GetOrderByName()). | ||||
|   | ||||
		Reference in New Issue
	
	Block a user