Skip to content

Commit 00bf9ad

Browse files
feat(api): update via SDK Studio
1 parent 3f0d5cd commit 00bf9ad

File tree

1 file changed

+97
-0
lines changed

1 file changed

+97
-0
lines changed

packages/pagination/pagination.go

+97
Original file line numberDiff line numberDiff line change
@@ -691,3 +691,100 @@ func (r *GroupsPageAutoPager[T]) Err() error {
691691
func (r *GroupsPageAutoPager[T]) Index() int {
692692
return r.run
693693
}
694+
695+
type MembersPage[T any] struct {
696+
Members []T `json:"members"`
697+
NextToken string `json:"nextToken"`
698+
JSON membersPageJSON `json:"-"`
699+
cfg *requestconfig.RequestConfig
700+
res *http.Response
701+
}
702+
703+
// membersPageJSON contains the JSON metadata for the struct [MembersPage[T]]
704+
type membersPageJSON struct {
705+
Members apijson.Field
706+
NextToken apijson.Field
707+
raw string
708+
ExtraFields map[string]apijson.Field
709+
}
710+
711+
func (r *MembersPage[T]) UnmarshalJSON(data []byte) (err error) {
712+
return apijson.UnmarshalRoot(data, r)
713+
}
714+
715+
func (r membersPageJSON) RawJSON() string {
716+
return r.raw
717+
}
718+
719+
// GetNextPage returns the next page as defined by this pagination style. When
720+
// there is no next page, this function will return a 'nil' for the page value, but
721+
// will not return an error
722+
func (r *MembersPage[T]) GetNextPage() (res *MembersPage[T], err error) {
723+
next := r.NextToken
724+
if len(next) == 0 {
725+
return nil, nil
726+
}
727+
cfg := r.cfg.Clone(r.cfg.Context)
728+
cfg.Apply(option.WithQuery("token", next))
729+
var raw *http.Response
730+
cfg.ResponseInto = &raw
731+
cfg.ResponseBodyInto = &res
732+
err = cfg.Execute()
733+
if err != nil {
734+
return nil, err
735+
}
736+
res.SetPageConfig(cfg, raw)
737+
return res, nil
738+
}
739+
740+
func (r *MembersPage[T]) SetPageConfig(cfg *requestconfig.RequestConfig, res *http.Response) {
741+
if r == nil {
742+
r = &MembersPage[T]{}
743+
}
744+
r.cfg = cfg
745+
r.res = res
746+
}
747+
748+
type MembersPageAutoPager[T any] struct {
749+
page *MembersPage[T]
750+
cur T
751+
idx int
752+
run int
753+
err error
754+
}
755+
756+
func NewMembersPageAutoPager[T any](page *MembersPage[T], err error) *MembersPageAutoPager[T] {
757+
return &MembersPageAutoPager[T]{
758+
page: page,
759+
err: err,
760+
}
761+
}
762+
763+
func (r *MembersPageAutoPager[T]) Next() bool {
764+
if r.page == nil || len(r.page.Members) == 0 {
765+
return false
766+
}
767+
if r.idx >= len(r.page.Members) {
768+
r.idx = 0
769+
r.page, r.err = r.page.GetNextPage()
770+
if r.err != nil || r.page == nil || len(r.page.Members) == 0 {
771+
return false
772+
}
773+
}
774+
r.cur = r.page.Members[r.idx]
775+
r.run += 1
776+
r.idx += 1
777+
return true
778+
}
779+
780+
func (r *MembersPageAutoPager[T]) Current() T {
781+
return r.cur
782+
}
783+
784+
func (r *MembersPageAutoPager[T]) Err() error {
785+
return r.err
786+
}
787+
788+
func (r *MembersPageAutoPager[T]) Index() int {
789+
return r.run
790+
}

0 commit comments

Comments
 (0)