fix(pagination): handle empty page return case

Adds a check for empty pages in the pagination logic to return a 
nil slice and empty PageInfo when there are no items to display. 
Updates tests to verify the behavior when no more items are 
available, ensuring robustness in pagination functionality.
This commit is contained in:
argoyle committed 2025-06-16 12:04:52 +02:00
1 parent e60459ddd4
commit a8a1c613a4
2 files changed
+9

No files matched your search

+3
View File
@@ -88,6 +88,9 @@ func GetPage[T any](items []T, first *int, after *string, last *int, before *str
eIx = idx
}
page := items[sIx:min(eIx, len(items))]
if len(page) == 0 {
return nil, PageInfo{}
}
return page, PageInfo{
StartCursor: ptr(EncodeCursor(fn(page[0]))),
HasNextPage: eIx < len(items),
+6
View File
@@ -45,6 +45,12 @@ func TestGetPage(t *testing.T) {
EndCursor: ptr("Mg=="),
},
},
{
name: "no more items",
args: args[string]{items: []string{"1", "2", "3"}, first: ptr(2), after: ptr("Mw=="), max: 10, fn: func(s string) string { return s }},
wantItems: nil,
wantPageInfo: PageInfo{},
},
{
name: "first 10",
args: args[string]{items: []string{"1", "2", "3"}, first: ptr(10), max: 10, fn: func(s string) string { return s }},