forked from gitea/gitea
		
	slight optimization for GetUserRepositories (#498)
This commit is contained in:
		
							parent
							
								
									22e1bd31c6
								
							
						
					
					
						commit
						799d0c2030
					
				| @ -536,24 +536,28 @@ func (org *User) GetUserTeams(userID int64) ([]*Team, error) { | ||||
| // that the user with the given userID has access to, | ||||
| // and total number of records based on given condition. | ||||
| func (org *User) GetUserRepositories(userID int64, page, pageSize int) ([]*Repository, int64, error) { | ||||
| 	var cond builder.Cond = builder.Eq{ | ||||
| 		"`repository`.owner_id":   org.ID, | ||||
| 		"`repository`.is_private": false, | ||||
| 	} | ||||
| 
 | ||||
| 	teamIDs, err := org.GetUserTeamIDs(userID) | ||||
| 	if err != nil { | ||||
| 		return nil, 0, fmt.Errorf("GetUserTeamIDs: %v", err) | ||||
| 	} | ||||
| 	if len(teamIDs) == 0 { | ||||
| 		// user has no team but "IN ()" is invalid SQL | ||||
| 		teamIDs = []int64{-1} // there is no repo with id=-1 | ||||
| 
 | ||||
| 	if len(teamIDs) > 0 { | ||||
| 		cond = cond.Or(builder.In("team_repo.team_id", teamIDs)) | ||||
| 	} | ||||
| 
 | ||||
| 	if page <= 0 { | ||||
| 		page = 1 | ||||
| 	} | ||||
| 	repos := make([]*Repository, 0, pageSize) | ||||
| 
 | ||||
| 	if err := x. | ||||
| 		Select("`repository`.*"). | ||||
| 		Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id"). | ||||
| 		Where("(`repository`.owner_id=? AND `repository`.is_private=?)", org.ID, false). | ||||
| 		Or(builder.In("team_repo.team_id", teamIDs)). | ||||
| 		Where(cond). | ||||
| 		GroupBy("`repository`.id"). | ||||
| 		OrderBy("updated_unix DESC"). | ||||
| 		Limit(pageSize, (page-1)*pageSize). | ||||
| @ -563,8 +567,7 @@ func (org *User) GetUserRepositories(userID int64, page, pageSize int) ([]*Repos | ||||
| 
 | ||||
| 	repoCount, err := x. | ||||
| 		Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id"). | ||||
| 		Where("(`repository`.owner_id=? AND `repository`.is_private=?)", org.ID, false). | ||||
| 		Or(builder.In("team_repo.team_id", teamIDs)). | ||||
| 		Where(cond). | ||||
| 		GroupBy("`repository`.id"). | ||||
| 		Count(&Repository{}) | ||||
| 	if err != nil { | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 GitHub
							GitHub