Add ability to initialize a paging iterator with initial token
@@ -39,7 +39,9 @@ type (
)
// NewPagingIterator create a new paging iterator
-func NewPagingIterator(paginationFn PaginationFn) Iterator {
+func NewPagingIterator(
+ paginationFn PaginationFn,
+) Iterator {
iter := &PagingIteratorImpl{
paginationFn: paginationFn,
pageToken: nil,
@@ -51,6 +53,22 @@ func NewPagingIterator(paginationFn PaginationFn) Iterator {
return iter
}
+// NewPagingIteratorWithToken create a new paging iterator with initial token
+func NewPagingIteratorWithToken(
+ paginationFn PaginationFn,
+ pageToken []byte,
+) Iterator {
+ iter := &PagingIteratorImpl{
+ paginationFn: paginationFn,
+ pageToken: pageToken,
+ pageErr: nil,
+ pageItems: nil,
+ nextPageItemIndex: 0,
+ }
+ iter.getNextPage() // this will initialize the paging iterator
+ return iter
+}
+
// HasNext return whether has next item or err
func (iter *PagingIteratorImpl) HasNext() bool {
// pagination encounters error
