From f1412142e005fef97cf3216c045b24d6cde36de5 Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Sat, 25 Feb 2017 09:27:39 +0800 Subject: [PATCH] refactor: repo counts for SearchRepositoryByName func (#1045) --- models/repo.go | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/models/repo.go b/models/repo.go index 3a1f149199cd..c79c52d68233 100644 --- a/models/repo.go +++ b/models/repo.go @@ -1834,7 +1834,7 @@ type SearchRepoOptions struct { // SearchRepositoryByName takes keyword and part of repository name to search, // it returns results in given range and number of total results. -func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, _ int64, _ error) { +func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, count int64, err error) { var ( sess *xorm.Session cond = builder.NewCond() @@ -1870,7 +1870,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, _ in var ownerIds []int64 ownerIds = append(ownerIds, opts.Searcher.ID) - err := opts.Searcher.GetOrganizations(true) + err = opts.Searcher.GetOrganizations(true) if err != nil { return nil, 0, fmt.Errorf("Organization: %v", err) @@ -1891,15 +1891,21 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, _ in sess = x. Join("INNER", "star", "star.repo_id = repository.id"). Where(cond) + count, err = x. + Join("INNER", "star", "star.repo_id = repository.id"). + Where(cond). + Count(new(Repository)) + if err != nil { + return nil, 0, fmt.Errorf("Count: %v", err) + } } else { sess = x.Where(cond) - } - - var countSess xorm.Session - countSess = *sess - count, err := countSess.Count(new(Repository)) - if err != nil { - return nil, 0, fmt.Errorf("Count: %v", err) + count, err = x. + Where(cond). + Count(new(Repository)) + if err != nil { + return nil, 0, fmt.Errorf("Count: %v", err) + } } if err = sess. @@ -1915,7 +1921,7 @@ func SearchRepositoryByName(opts *SearchRepoOptions) (repos RepositoryList, _ in } } - return repos, count, nil + return } // DeleteRepositoryArchives deletes all repositories' archives.