From 7fd14bf7bd96849f3f64a3bcbfb914050c063660 Mon Sep 17 00:00:00 2001
From: Lunny Xiao <xiaolunwen@gmail.com>
Date: Thu, 16 Feb 2017 12:07:58 +0800
Subject: [PATCH] optimization for team get repos (#953)

---
 models/org_team.go | 18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)

diff --git a/models/org_team.go b/models/org_team.go
index b795c90e0..dfdffa70b 100644
--- a/models/org_team.go
+++ b/models/org_team.go
@@ -37,22 +37,8 @@ func (t *Team) IsMember(userID int64) bool {
 }
 
 func (t *Team) getRepositories(e Engine) (err error) {
-	teamRepos := make([]*TeamRepo, 0, t.NumRepos)
-	if err = x.
-		Where("team_id=?", t.ID).
-		Find(&teamRepos); err != nil {
-		return fmt.Errorf("get team-repos: %v", err)
-	}
-
-	t.Repos = make([]*Repository, 0, len(teamRepos))
-	for i := range teamRepos {
-		repo, err := getRepositoryByID(e, teamRepos[i].RepoID)
-		if err != nil {
-			return fmt.Errorf("getRepositoryById(%d): %v", teamRepos[i].RepoID, err)
-		}
-		t.Repos = append(t.Repos, repo)
-	}
-	return nil
+	return e.Join("INNER", "team_repo", "repository.id = team_repo.repo_id").
+		Where("team_repo.team_id=?", t.ID).Find(&t.Repos)
 }
 
 // GetRepositories returns all repositories in team of organization.