aboutsummaryrefslogtreecommitdiffstats
path: root/models/repo.go
diff options
context:
space:
mode:
Diffstat (limited to 'models/repo.go')
-rw-r--r--models/repo.go21
1 files changed, 14 insertions, 7 deletions
diff --git a/models/repo.go b/models/repo.go
index bf7bf018a1..3b874f3359 100644
--- a/models/repo.go
+++ b/models/repo.go
@@ -35,6 +35,7 @@ import (
"code.gitea.io/gitea/modules/util"
"github.com/unknwon/com"
+ "xorm.io/builder"
)
var (
@@ -1774,22 +1775,28 @@ func GetRepositoriesMapByIDs(ids []int64) (map[int64]*Repository, error) {
}
// GetUserRepositories returns a list of repositories of given user.
-func GetUserRepositories(opts *SearchRepoOptions) ([]*Repository, error) {
+func GetUserRepositories(opts *SearchRepoOptions) ([]*Repository, int64, error) {
if len(opts.OrderBy) == 0 {
opts.OrderBy = "updated_unix DESC"
}
- sess := x.
- Where("owner_id = ?", opts.Actor.ID).
- OrderBy(opts.OrderBy.String())
+ var cond = builder.NewCond()
+ cond = cond.And(builder.Eq{"owner_id": opts.Actor.ID})
if !opts.Private {
- sess.And("is_private=?", false)
+ cond = cond.And(builder.Eq{"is_private": false})
}
- sess = opts.setSessionPagination(sess)
+ sess := x.NewSession()
+ defer sess.Close()
+
+ count, err := sess.Where(cond).Count(new(Repository))
+ if err != nil {
+ return nil, 0, fmt.Errorf("Count: %v", err)
+ }
+ sess.Where(cond).OrderBy(opts.OrderBy.String())
repos := make([]*Repository, 0, opts.PageSize)
- return repos, opts.setSessionPagination(sess).Find(&repos)
+ return repos, count, opts.setSessionPagination(sess).Find(&repos)
}
// GetUserMirrorRepositories returns a list of mirror repositories of given user.