Skip to content

Commit d6e9f05

Browse files
silverwindclaude
andcommitted
Use generics for paginator.New and NewPagination
Make paginator.New and NewPagination generic [T ~int | ~int64] so callers can pass either int or int64 without explicit casts. This eliminates all int64() casts in web router callers while keeping the safe clamping to math.MaxInt internally. Co-Authored-By: Claude (Opus 4.6) <noreply@anthropic.com>
1 parent 8e86871 commit d6e9f05

31 files changed

Lines changed: 46 additions & 46 deletions

modules/paginator/paginator.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,9 @@ type Paginator struct {
4848
}
4949

5050
// New initialize a new pagination calculation and returns a Paginator as result.
51-
func New(total int64, pagingNum, current, numPages int) *Paginator {
51+
func New[T ~int | ~int64](total T, pagingNum, current, numPages int) *Paginator {
5252
pagingNum = max(pagingNum, 1)
53-
t := int(min(total, int64(math.MaxInt)))
53+
t := int(min(int64(total), int64(math.MaxInt)))
5454
totalPages := util.Iif(t == -1, -1, (t+pagingNum-1)/pagingNum)
5555
if t >= 0 {
5656
current = min(current, totalPages)

routers/web/admin/emails.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func Emails(ctx *context.Context) {
9393
ctx.Data["Total"] = count
9494
ctx.Data["Emails"] = emails
9595

96-
pager := context.NewPagination(count, opts.PageSize, opts.Page, 5)
96+
pager := context.NewPagination(int(count), opts.PageSize, opts.Page, 5)
9797
pager.AddParamFromRequest(ctx.Req)
9898
ctx.Data["Page"] = pager
9999

routers/web/admin/notice.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func Notices(ctx *context.Context) {
3737

3838
ctx.Data["Total"] = total
3939

40-
ctx.Data["Page"] = context.NewPagination(total, setting.UI.Admin.NoticePagingNum, page, 5)
40+
ctx.Data["Page"] = context.NewPagination(int(total), setting.UI.Admin.NoticePagingNum, page, 5)
4141

4242
ctx.HTML(http.StatusOK, tplNotices)
4343
}

routers/web/admin/packages.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ func Packages(ctx *context.Context) {
7373
ctx.Data["TotalBlobSize"] = totalBlobSize - totalUnreferencedBlobSize
7474
ctx.Data["TotalUnreferencedBlobSize"] = totalUnreferencedBlobSize
7575

76-
pager := context.NewPagination(total, setting.UI.PackagesPagingNum, page, 5)
76+
pager := context.NewPagination(int(total), setting.UI.PackagesPagingNum, page, 5)
7777
pager.AddParamFromRequest(ctx.Req)
7878
ctx.Data["Page"] = pager
7979

routers/web/admin/repos.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ func UnadoptedRepos(ctx *context.Context) {
9696
return
9797
}
9898
ctx.Data["Dirs"] = repoNames
99-
pager := context.NewPagination(int64(count), opts.PageSize, opts.Page, 5)
99+
pager := context.NewPagination(count, opts.PageSize, opts.Page, 5)
100100
pager.AddParamFromRequest(ctx.Req)
101101
ctx.Data["Page"] = pager
102102
ctx.HTML(http.StatusOK, tplUnadoptedRepos)

routers/web/explore/code.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ func Code(ctx *context.Context) {
123123
ctx.Data["SearchResults"] = searchResults
124124
ctx.Data["SearchResultLanguages"] = searchResultLanguages
125125

126-
pager := context.NewPagination(int64(total), setting.UI.RepoSearchPagingNum, page, 5)
126+
pager := context.NewPagination(total, setting.UI.RepoSearchPagingNum, page, 5)
127127
pager.AddParamFromRequest(ctx.Req)
128128
ctx.Data["Page"] = pager
129129

routers/web/explore/repo.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ func RenderRepoSearch(ctx *context.Context, opts *RepoSearchOptions) {
137137
ctx.Data["Repos"] = repos
138138
ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
139139

140-
pager := context.NewPagination(count, opts.PageSize, page, 5)
140+
pager := context.NewPagination(int(count), opts.PageSize, page, 5)
141141
pager.AddParamFromRequest(ctx.Req)
142142
ctx.Data["Page"] = pager
143143

routers/web/explore/user.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ func RenderUserSearch(ctx *context.Context, opts user_model.SearchUserOptions, t
119119
ctx.Data["ShowUserEmail"] = setting.UI.ShowUserEmail
120120
ctx.Data["IsRepoIndexerEnabled"] = setting.Indexer.RepoIndexerEnabled
121121

122-
pager := context.NewPagination(count, opts.PageSize, opts.Page, 5)
122+
pager := context.NewPagination(int(count), opts.PageSize, opts.Page, 5)
123123
pager.AddParamFromRequest(ctx.Req)
124124
ctx.Data["Page"] = pager
125125

routers/web/org/home.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func home(ctx *context.Context, viewRepositories bool) {
141141
ctx.Data["Repos"] = repos
142142
ctx.Data["Total"] = count
143143

144-
pager := context.NewPagination(count, setting.UI.User.RepoPagingNum, page, 5)
144+
pager := context.NewPagination(int(count), setting.UI.User.RepoPagingNum, page, 5)
145145
pager.AddParamFromRequest(ctx.Req)
146146
ctx.Data["Page"] = pager
147147

routers/web/org/members.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func Members(ctx *context.Context) {
5656
return
5757
}
5858

59-
pager := context.NewPagination(total, setting.UI.MembersPagingNum, page, 5)
59+
pager := context.NewPagination(int(total), setting.UI.MembersPagingNum, page, 5)
6060
opts.ListOptions.Page = page
6161
opts.ListOptions.PageSize = setting.UI.MembersPagingNum
6262
members, membersIsPublic, err := organization.FindOrgMembers(ctx, opts)

0 commit comments

Comments
 (0)