diff --git a/models/release.go b/models/release.go index bc48f6159..783f1f047 100644 --- a/models/release.go +++ b/models/release.go @@ -14,6 +14,7 @@ import ( "code.gitea.io/gitea/modules/process" "code.gitea.io/gitea/modules/setting" api "code.gitea.io/sdk/gitea" + "github.com/go-xorm/builder" "github.com/go-xorm/xorm" ) @@ -244,6 +245,19 @@ func GetReleasesByRepoID(repoID int64, page, pageSize int) (rels []*Release, err return rels, err } +// GetReleaseCountByRepoID returns the count of releases of repository +func GetReleaseCountByRepoID(repoID int64, includeDrafts bool) (int64, error) { + var cond = builder.NewCond() + cond = cond.And(builder.Eq{"repo_id": repoID}) + + if includeDrafts { + return x.Where(cond).Count(&Release{}) + } + + cond = cond.And(builder.Eq{"is_draft": false}) + return x.Where(cond).Count(&Release{}) +} + // GetReleasesByRepoIDAndNames returns a list of releases of repository according repoID and tagNames. func GetReleasesByRepoIDAndNames(repoID int64, tagNames []string) (rels []*Release, err error) { err = x. diff --git a/routers/repo/release.go b/routers/repo/release.go index 093fec539..1b2c630a5 100644 --- a/routers/repo/release.go +++ b/routers/repo/release.go @@ -67,7 +67,13 @@ func Releases(ctx *context.Context) { releases, err := models.GetReleasesByRepoID(ctx.Repo.Repository.ID, page, limit) if err != nil { - ctx.Handle(500, "GetReleasesByRepoIDAndNames", err) + ctx.Handle(500, "GetReleasesByRepoID", err) + return + } + + count, err := models.GetReleaseCountByRepoID(ctx.Repo.Repository.ID, ctx.Repo.IsOwner()) + if err != nil { + ctx.Handle(500, "GetReleaseCountByRepoID", err) return } @@ -110,7 +116,7 @@ func Releases(ctx *context.Context) { releasesToDisplay = append(releasesToDisplay, r) } - pager := paginater.New(len(releasesToDisplay), limit, page, 5) + pager := paginater.New(int(count), limit, page, 5) ctx.Data["Page"] = pager ctx.Data["Releases"] = releasesToDisplay ctx.HTML(200, tplReleases)