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:
@@ -88,6 +88,9 @@ func GetPage[T any](items []T, first *int, after *string, last *int, before *str
|
|||||||
eIx = idx
|
eIx = idx
|
||||||
}
|
}
|
||||||
page := items[sIx:min(eIx, len(items))]
|
page := items[sIx:min(eIx, len(items))]
|
||||||
|
if len(page) == 0 {
|
||||||
|
return nil, PageInfo{}
|
||||||
|
}
|
||||||
return page, PageInfo{
|
return page, PageInfo{
|
||||||
StartCursor: ptr(EncodeCursor(fn(page[0]))),
|
StartCursor: ptr(EncodeCursor(fn(page[0]))),
|
||||||
HasNextPage: eIx < len(items),
|
HasNextPage: eIx < len(items),
|
||||||
|
|||||||
@@ -45,6 +45,12 @@ func TestGetPage(t *testing.T) {
|
|||||||
EndCursor: ptr("Mg=="),
|
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",
|
name: "first 10",
|
||||||
args: args[string]{items: []string{"1", "2", "3"}, first: ptr(10), max: 10, fn: func(s string) string { return s }},
|
args: args[string]{items: []string{"1", "2", "3"}, first: ptr(10), max: 10, fn: func(s string) string { return s }},
|
||||||
|
|||||||
Reference in New Issue
Block a user