@@ -56,3 +56,39 @@ | |||
num_pulls: 0 | |||
num_closed_pulls: 0 | |||
is_mirror: true | |||
- | |||
id: 6 | |||
owner_id: 10 | |||
lower_name: repo6 | |||
name: repo6 | |||
is_private: true | |||
num_issues: 0 | |||
num_closed_issues: 0 | |||
num_pulls: 0 | |||
num_closed_pulls: 0 | |||
is_mirror: false | |||
- | |||
id: 7 | |||
owner_id: 10 | |||
lower_name: repo7 | |||
name: repo7 | |||
is_private: true | |||
num_issues: 0 | |||
num_closed_issues: 0 | |||
num_pulls: 0 | |||
num_closed_pulls: 0 | |||
is_mirror: false | |||
- | |||
id: 8 | |||
owner_id: 10 | |||
lower_name: repo8 | |||
name: repo8 | |||
is_private: false | |||
num_issues: 0 | |||
num_closed_issues: 0 | |||
num_pulls: 0 | |||
num_closed_pulls: 0 | |||
is_mirror: false |
@@ -1737,11 +1737,29 @@ func getRepositoryCount(e Engine, u *User) (int64, error) { | |||
return x.Count(&Repository{OwnerID: u.ID}) | |||
} | |||
func getPublicRepositoryCount(e Engine, u *User) (int64, error) { | |||
return x.Where("is_private = ?", false).Count(&Repository{OwnerID: u.ID}) | |||
} | |||
func getPrivateRepositoryCount(e Engine, u *User) (int64, error) { | |||
return x.Where("is_private = ?", true).Count(&Repository{OwnerID: u.ID}) | |||
} | |||
// GetRepositoryCount returns the total number of repositories of user. | |||
func GetRepositoryCount(u *User) (int64, error) { | |||
return getRepositoryCount(x, u) | |||
} | |||
// GetPublicRepositoryCount returns the total number of public repositories of user. | |||
func GetPublicRepositoryCount(u *User) (int64, error) { | |||
return getPublicRepositoryCount(x, u) | |||
} | |||
// GetPrivateRepositoryCount returns the total number of private repositories of user. | |||
func GetPrivateRepositoryCount(u *User) (int64, error) { | |||
return getPrivateRepositoryCount(x, u) | |||
} | |||
// SearchRepoOptions holds the search options | |||
type SearchRepoOptions struct { | |||
Keyword string |
@@ -1,11 +1,16 @@ | |||
package models_test | |||
// Copyright 2017 The Gitea Authors. All rights reserved. | |||
// Use of this source code is governed by a MIT-style | |||
// license that can be found in the LICENSE file. | |||
package models | |||
import ( | |||
"testing" | |||
. "code.gitea.io/gitea/models" | |||
"code.gitea.io/gitea/modules/markdown" | |||
. "github.com/smartystreets/goconvey/convey" | |||
"github.com/stretchr/testify/assert" | |||
) | |||
func TestRepo(t *testing.T) { | |||
@@ -68,3 +73,32 @@ func TestRepo(t *testing.T) { | |||
}) | |||
}) | |||
} | |||
func TestGetRepositoryCount(t *testing.T) { | |||
assert.NoError(t, PrepareTestDatabase()) | |||
count, err1 := GetRepositoryCount(&User{ID: int64(10)}) | |||
privateCount, err2 := GetPrivateRepositoryCount(&User{ID: int64(10)}) | |||
publicCount, err3 := GetPublicRepositoryCount(&User{ID: int64(10)}) | |||
assert.NoError(t, err1) | |||
assert.NoError(t, err2) | |||
assert.NoError(t, err3) | |||
assert.Equal(t, int64(3), count) | |||
assert.Equal(t, (privateCount + publicCount), count) | |||
} | |||
func TestGetPublicRepositoryCount(t *testing.T) { | |||
assert.NoError(t, PrepareTestDatabase()) | |||
count, err := GetPublicRepositoryCount(&User{ID: int64(10)}) | |||
assert.NoError(t, err) | |||
assert.Equal(t, int64(1), count) | |||
} | |||
func TestGetPrivateRepositoryCount(t *testing.T) { | |||
assert.NoError(t, PrepareTestDatabase()) | |||
count, err := GetPrivateRepositoryCount(&User{ID: int64(10)}) | |||
assert.NoError(t, err) | |||
assert.Equal(t, int64(2), count) | |||
} |
@@ -134,14 +134,27 @@ func Profile(ctx *context.Context) { | |||
keyword := ctx.Query("q") | |||
if len(keyword) == 0 { | |||
var total int | |||
repos, err = models.GetUserRepositories(ctxUser.ID, showPrivate, page, setting.UI.User.RepoPagingNum, orderBy) | |||
if err != nil { | |||
ctx.Handle(500, "GetRepositories", err) | |||
return | |||
} | |||
ctx.Data["Repos"] = repos | |||
ctx.Data["Page"] = paginater.New(ctxUser.NumRepos, setting.UI.User.RepoPagingNum, page, 5) | |||
ctx.Data["Total"] = ctxUser.NumRepos | |||
if showPrivate { | |||
total = ctxUser.NumRepos | |||
} else { | |||
count, err := models.GetPublicRepositoryCount(ctxUser) | |||
if err != nil { | |||
ctx.Handle(500, "GetPublicRepositoryCount", err) | |||
return | |||
} | |||
total = int(count) | |||
} | |||
ctx.Data["Page"] = paginater.New(total, setting.UI.User.RepoPagingNum, page, 5) | |||
ctx.Data["Total"] = total | |||
} else { | |||
repos, count, err = models.SearchRepositoryByName(&models.SearchRepoOptions{ | |||
Keyword: keyword, |