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
|
@ -425,6 +425,25 @@ func GetOrgsByUserID(userID int64, showAll bool) ([]*User, error) {
|
||||||
return getOrgsByUserID(sess, userID, showAll)
|
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) {
|
func getOwnedOrgsByUserID(sess *xorm.Session, userID int64) ([]*User, error) {
|
||||||
orgs := make([]*User, 0, 10)
|
orgs := make([]*User, 0, 10)
|
||||||
return orgs, sess.
|
return orgs, sess.
|
||||||
|
|
|
@ -49,11 +49,12 @@ func getDashboardContextUser(ctx *context.Context) *models.User {
|
||||||
}
|
}
|
||||||
ctx.Data["ContextUser"] = ctxUser
|
ctx.Data["ContextUser"] = ctxUser
|
||||||
|
|
||||||
if err := ctx.User.GetOrganizations(&models.SearchOrganizationsOptions{All: true}); err != nil {
|
orgs, err := models.GetUserOrgsList(ctx.User.ID)
|
||||||
ctx.ServerError("GetOrganizations", err)
|
if err != nil {
|
||||||
|
ctx.ServerError("GetUserOrgsList", err)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
ctx.Data["Orgs"] = ctx.User.Orgs
|
ctx.Data["Orgs"] = orgs
|
||||||
|
|
||||||
return ctxUser
|
return ctxUser
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue