diff options
Diffstat (limited to 'models/org.go')
-rw-r--r-- | models/org.go | 18 |
1 files changed, 16 insertions, 2 deletions
diff --git a/models/org.go b/models/org.go index a293f58216..36d868d5ce 100644 --- a/models/org.go +++ b/models/org.go @@ -598,15 +598,29 @@ func (org *User) GetUserRepositories(userID int64, page, pageSize int) ([]*Repos if page <= 0 { page = 1 } + repos := make([]*Repository, 0, pageSize) - if err := x.Select("`repository`.*"). + if err := x. + Select("`repository`.id"). Join("INNER", "team_repo", "`team_repo`.repo_id=`repository`.id"). Where(cond). - GroupBy("`repository`.id"). + GroupBy("`repository`.id,`repository`.updated_unix"). OrderBy("updated_unix DESC"). Limit(pageSize, (page-1)*pageSize). Find(&repos); err != nil { + return nil, 0, fmt.Errorf("get repository ids: %v", err) + } + + repoIDs := make([]int64,pageSize) + for i := range repos { + repoIDs[i] = repos[i].ID + } + + if err := x. + Select("`repository`.*"). + Where(builder.In("`repository`.id",repoIDs)). + Find(&repos); err!=nil { return nil, 0, fmt.Errorf("get repositories: %v", err) } |