Improve performance of dashboard list orgs (#16099)
* Improve performance of dashboard list orgs * Fix wrong error description * unexport queryUserOrgIDs method * SimpleOrg -> MinimalOrg * . Co-authored-by: 6543 <6543@obermui.de>
This commit is contained in:
		
					parent
					
						
							
								1295e750b4
							
						
					
				
			
			
				commit
				
					
						5d113bdd19
					
				
			
		
					 2 changed files with 23 additions and 3 deletions
				
			
		| 
						 | 
				
			
			@ -425,6 +425,25 @@ func GetOrgsByUserID(userID int64, showAll bool) ([]*User, error) {
 | 
			
		|||
	return getOrgsByUserID(sess, userID, showAll)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// queryUserOrgIDs returns a condition to return user's organization id
 | 
			
		||||
func queryUserOrgIDs(uid int64) *builder.Builder {
 | 
			
		||||
	return builder.Select("team.org_id").
 | 
			
		||||
		From("team_user").InnerJoin("team", "team.id = team_user.team_id").
 | 
			
		||||
		Where(builder.Eq{"team_user.uid": uid})
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// MinimalOrg represents a simple orgnization with only needed columns
 | 
			
		||||
type MinimalOrg = User
 | 
			
		||||
 | 
			
		||||
// GetUserOrgsList returns one user's all orgs list
 | 
			
		||||
func GetUserOrgsList(uid int64) ([]*MinimalOrg, error) {
 | 
			
		||||
	var orgs = make([]*MinimalOrg, 0, 20)
 | 
			
		||||
	return orgs, x.Select("id, name, full_name, visibility, avatar, avatar_email, use_custom_avatar").
 | 
			
		||||
		Table("user").
 | 
			
		||||
		In("id", queryUserOrgIDs(uid)).
 | 
			
		||||
		Find(&orgs)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func getOwnedOrgsByUserID(sess *xorm.Session, userID int64) ([]*User, error) {
 | 
			
		||||
	orgs := make([]*User, 0, 10)
 | 
			
		||||
	return orgs, sess.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -49,11 +49,12 @@ func getDashboardContextUser(ctx *context.Context) *models.User {
 | 
			
		|||
	}
 | 
			
		||||
	ctx.Data["ContextUser"] = ctxUser
 | 
			
		||||
 | 
			
		||||
	if err := ctx.User.GetOrganizations(&models.SearchOrganizationsOptions{All: true}); err != nil {
 | 
			
		||||
		ctx.ServerError("GetOrganizations", err)
 | 
			
		||||
	orgs, err := models.GetUserOrgsList(ctx.User.ID)
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		ctx.ServerError("GetUserOrgsList", err)
 | 
			
		||||
		return nil
 | 
			
		||||
	}
 | 
			
		||||
	ctx.Data["Orgs"] = ctx.User.Orgs
 | 
			
		||||
	ctx.Data["Orgs"] = orgs
 | 
			
		||||
 | 
			
		||||
	return ctxUser
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue