package helper import ( "github.com/gshopify/service-wrapper/interfaces" "github.com/gshopify/service-wrapper/model" "gshopper.com/gshopify/products/graphql/generated" ) func NewPageInfo[T interfaces.Node](src []T, namespace model.Gid, first T, last T) *generated.PageInfo { var ( size = len(src) info = &generated.PageInfo{} ) if size == 0 { return info } if c, err := model.NewSimpleCursor(src[0].GetID(), namespace); err == nil { info.StartCursor = c.String() } if c, err := model.NewSimpleCursor(src[size-1].GetID(), namespace); err == nil { info.EndCursor = c.String() } info.HasPreviousPage = first.GetID() != src[0].GetID() info.HasNextPage = info.StartCursor == info.EndCursor || last.GetID() != src[size-1].GetID() return info }