From 623d72536cca3161283edf5a7c3513ecbf1e28df Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 16 Feb 2017 10:39:29 +0800 Subject: [PATCH 1/2] Small opitimization for getUserTeams --- models/org_team.go | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/models/org_team.go b/models/org_team.go index d9ad0ba28f899..2e652c487171d 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -439,26 +439,12 @@ func GetTeamMembers(teamID int64) ([]*User, error) { } func getUserTeams(e Engine, orgID, userID int64) ([]*Team, error) { - tus := make([]*TeamUser, 0, 5) - if err := e. - Where("uid=?", userID). - And("org_id=?", orgID). - Find(&tus); err != nil { - return nil, err - } - - ts := make([]*Team, len(tus)) - for i, tu := range tus { - t := new(Team) - has, err := e.Id(tu.TeamID).Get(t) - if err != nil { - return nil, err - } else if !has { - return nil, ErrTeamNotExist - } - ts[i] = t - } - return ts, nil + var teams []*Team + return teams, e. + Join("INNER", "team_user", "team_user.team_id = team.id"). + Where("team.org_id = ?", orgID). + And("team_user.uid=?", userID). + Find(&teams) } // GetUserTeams returns all teams that user belongs to in given organization. From 4c26116674baa4dddba715834f51801dd08c9dde Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Thu, 16 Feb 2017 10:42:50 +0800 Subject: [PATCH 2/2] more compact --- models/org_team.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/models/org_team.go b/models/org_team.go index 2e652c487171d..b795c90e07001 100644 --- a/models/org_team.go +++ b/models/org_team.go @@ -438,8 +438,7 @@ func GetTeamMembers(teamID int64) ([]*User, error) { return getTeamMembers(x, teamID) } -func getUserTeams(e Engine, orgID, userID int64) ([]*Team, error) { - var teams []*Team +func getUserTeams(e Engine, orgID, userID int64) (teams []*Team, err error) { return teams, e. Join("INNER", "team_user", "team_user.team_id = team.id"). Where("team.org_id = ?", orgID).