@@ -10,7 +10,10 @@ import (
1010 core "dappco.re/go/core"
1111)
1212
13- const defaultPageLimit = 50
13+ const defaultPageSize = 50
14+
15+ // defaultPageLimit is retained for compatibility with existing call sites.
16+ const defaultPageLimit = defaultPageSize
1417
1518// ListOptions controls pagination.
1619//
@@ -19,8 +22,10 @@ const defaultPageLimit = 50
1922// opts := forge.ListOptions{Page: 1, Limit: 50}
2023// _ = opts
2124type ListOptions struct {
22- Page int // 1-based page number
23- Limit int // items per page (default 50)
25+ Page int // 1-based page number
26+ PageSize int // items per page (default 50)
27+ // Limit is a compatibility alias for PageSize.
28+ Limit int
2429}
2530
2631// String returns a safe summary of the pagination options.
@@ -29,11 +34,15 @@ type ListOptions struct {
2934//
3035// _ = forge.DefaultList.String()
3136func (o ListOptions ) String () string {
37+ pageSize := o .PageSize
38+ if pageSize == 0 {
39+ pageSize = o .Limit
40+ }
3241 return core .Concat (
3342 "forge.ListOptions{page=" ,
3443 strconv .Itoa (o .Page ),
35- ", limit =" ,
36- strconv .Itoa (o . Limit ),
44+ ", page_size =" ,
45+ strconv .Itoa (pageSize ),
3746 "}" ,
3847 )
3948}
@@ -51,7 +60,7 @@ func (o ListOptions) GoString() string { return o.String() }
5160//
5261// page, err := forge.ListPage[types.Repository](ctx, client, path, nil, forge.DefaultList)
5362// _ = page
54- var DefaultList = ListOptions {Page : 1 , Limit : defaultPageLimit }
63+ var DefaultList = ListOptions {Page : 1 , PageSize : defaultPageSize }
5564
5665// PagedResult holds a single page of results with metadata.
5766//
@@ -108,8 +117,12 @@ func ListPage[T any](ctx context.Context, c *Client, path string, query map[stri
108117 if opts .Page < 1 {
109118 opts .Page = 1
110119 }
111- if opts .Limit < 1 {
112- opts .Limit = defaultPageLimit
120+ pageSize := opts .PageSize
121+ if pageSize < 1 {
122+ pageSize = opts .Limit
123+ }
124+ if pageSize < 1 {
125+ pageSize = defaultPageSize
113126 }
114127
115128 u , err := url .Parse (path )
@@ -119,7 +132,7 @@ func ListPage[T any](ctx context.Context, c *Client, path string, query map[stri
119132
120133 q := u .Query ()
121134 q .Set ("page" , strconv .Itoa (opts .Page ))
122- q .Set ("limit" , strconv .Itoa (opts . Limit ))
135+ q .Set ("limit" , strconv .Itoa (pageSize ))
123136 for k , v := range query {
124137 q .Set (k , v )
125138 }
@@ -139,8 +152,8 @@ func ListPage[T any](ctx context.Context, c *Client, path string, query map[stri
139152 Page : opts .Page ,
140153 // If totalCount is provided, use it to determine if there are more items.
141154 // Otherwise, assume there are more if we got a full page.
142- HasMore : (totalCount > 0 && (opts .Page - 1 )* opts . Limit + len (items ) < totalCount ) ||
143- (totalCount == 0 && len (items ) >= opts . Limit ),
155+ HasMore : (totalCount > 0 && (opts .Page - 1 )* pageSize + len (items ) < totalCount ) ||
156+ (totalCount == 0 && len (items ) >= pageSize ),
144157 }, nil
145158}
146159
@@ -155,7 +168,7 @@ func ListAll[T any](ctx context.Context, c *Client, path string, query map[strin
155168 page := 1
156169
157170 for {
158- result , err := ListPage [T ](ctx , c , path , query , ListOptions {Page : page , Limit : defaultPageLimit })
171+ result , err := ListPage [T ](ctx , c , path , query , ListOptions {Page : page , PageSize : defaultPageSize })
159172 if err != nil {
160173 return nil , err
161174 }
@@ -180,7 +193,7 @@ func ListIter[T any](ctx context.Context, c *Client, path string, query map[stri
180193 return func (yield func (T , error ) bool ) {
181194 page := 1
182195 for {
183- result , err := ListPage [T ](ctx , c , path , query , ListOptions {Page : page , Limit : defaultPageLimit })
196+ result , err := ListPage [T ](ctx , c , path , query , ListOptions {Page : page , PageSize : defaultPageSize })
184197 if err != nil {
185198 yield (* new (T ), err )
186199 return
0 commit comments