Only query team tables if repository is under org when getting assignees () ()

backport  

It's unnecessary to query the team table if the repository is not under
organization when getting assignees.
This commit is contained in:
Lunny Xiao 2024-11-05 19:22:11 -08:00 committed by GitHub
parent 936847b3da
commit 16e51e91a1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -110,6 +110,10 @@ func GetRepoAssignees(ctx context.Context, repo *Repository) (_ []*user_model.Us
return nil, err return nil, err
} }
uniqueUserIDs := make(container.Set[int64])
uniqueUserIDs.AddMultiple(userIDs...)
if repo.Owner.IsOrganization() {
additionalUserIDs := make([]int64, 0, 10) additionalUserIDs := make([]int64, 0, 10)
if err = e.Table("team_user"). if err = e.Table("team_user").
Join("INNER", "team_repo", "`team_repo`.team_id = `team_user`.team_id"). Join("INNER", "team_repo", "`team_repo`.team_id = `team_user`.team_id").
@ -121,15 +125,13 @@ func GetRepoAssignees(ctx context.Context, repo *Repository) (_ []*user_model.Us
Find(&additionalUserIDs); err != nil { Find(&additionalUserIDs); err != nil {
return nil, err return nil, err
} }
uniqueUserIDs := make(container.Set[int64])
uniqueUserIDs.AddMultiple(userIDs...)
uniqueUserIDs.AddMultiple(additionalUserIDs...) uniqueUserIDs.AddMultiple(additionalUserIDs...)
}
// Leave a seat for owner itself to append later, but if owner is an organization // 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. // and just waste 1 unit is cheaper than re-allocate memory once.
users := make([]*user_model.User, 0, len(uniqueUserIDs)+1) users := make([]*user_model.User, 0, len(uniqueUserIDs)+1)
if len(userIDs) > 0 { if len(uniqueUserIDs) > 0 {
if err = e.In("id", uniqueUserIDs.Values()). if err = e.In("id", uniqueUserIDs.Values()).
Where(builder.Eq{"`user`.is_active": true}). Where(builder.Eq{"`user`.is_active": true}).
OrderBy(user_model.GetOrderByName()). OrderBy(user_model.GetOrderByName()).