keysetpagination

package
v0.0.628 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 19, 2024 License: Apache-2.0 Imports: 12 Imported by: 11

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrUnknownOrder = errors.New("unknown order")

Functions

func Header(w http.ResponseWriter, u *url.URL, p *Paginator)

Header adds the Link header for the page encoded by the paginator. It contains links to the first and next page, if one exists.

func Paginate

func Paginate[I any, PI interface {
	Item
	*I
}](p *Paginator) pop.ScopeFunc

Paginate returns a function that paginates a pop.Query. Usage:

q := c.Where("foo = ?", foo).Scope(keysetpagination.Paginate[MyItemType](paginator))

This function works regardless of whether your type implements the Item interface with pointer or value receivers. To understand the type parameters, see this document: https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md#pointer-method-example

Types

type Item

type Item interface{ PageToken() PageToken }

type MapPageToken added in v0.0.519

type MapPageToken map[string]string

func (MapPageToken) Encode added in v0.0.519

func (m MapPageToken) Encode() string

func (MapPageToken) Parse added in v0.0.519

func (m MapPageToken) Parse(_ string) map[string]string

type Option

type Option func(*Paginator) *Paginator

func Parse

func Parse(q url.Values, p PageTokenConstructor) ([]Option, error)

Parse returns the pagination options from the URL query.

func WithColumn added in v0.0.519

func WithColumn(name string, order Order) Option

func WithDefaultSize

func WithDefaultSize(size int) Option

func WithDefaultToken

func WithDefaultToken(t PageToken) Option

func WithMaxSize

func WithMaxSize(size int) Option

func WithSize

func WithSize(size int) Option

func WithToken

func WithToken(t PageToken) Option

type Order added in v0.0.519

type Order string
const (
	OrderDescending Order = "DESC"
	OrderAscending  Order = "ASC"
)

type PageToken added in v0.0.519

type PageToken interface {
	Parse(string) map[string]string
	Encode() string
}

func NewMapPageToken added in v0.0.519

func NewMapPageToken(s string) (PageToken, error)

func NewStringPageToken added in v0.0.519

func NewStringPageToken(s string) (PageToken, error)

type PageTokenConstructor added in v0.0.519

type PageTokenConstructor = func(string) (PageToken, error)

type PaginationResult added in v0.0.588

type PaginationResult struct {
	// NextToken is the next page token. If it's empty, there is no next page.
	NextToken string

	// FirstToken is the first page token.
	FirstToken string
}

PaginationResult represents a parsed result of the link HTTP header.

func ParseHeader added in v0.0.588

func ParseHeader(r *http.Response) *PaginationResult

ParseHeader parses the response header's Link.

type Paginator

type Paginator struct {
	// contains filtered or unexported fields
}

func GetPaginator

func GetPaginator(modifiers ...Option) *Paginator

func Result

func Result[I any, PI interface {
	Item
	*I
}](items []I, p *Paginator) ([]I, *Paginator)

Result removes the last item (if applicable) and returns the paginator for the next page.

This function works regardless of whether your type implements the Item interface with pointer or value receivers. To understand the type parameters, see this document: https://go.googlesource.com/proposal/+/refs/heads/master/design/43651-type-parameters.md#pointer-method-example

func (*Paginator) IsLast

func (p *Paginator) IsLast() bool

func (*Paginator) Size

func (p *Paginator) Size() int

func (*Paginator) ToOptions

func (p *Paginator) ToOptions() []Option

func (*Paginator) Token

func (p *Paginator) Token() PageToken

type RequestParameters added in v0.0.491

type RequestParameters struct {
	// Items per Page
	//
	// This is the number of items per page to return.
	// For details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).
	//
	// required: false
	// in: query
	// default: 250
	// min: 1
	// max: 1000
	PageSize int `json:"page_size"`

	// Next Page Token
	//
	// The next page token.
	// For details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).
	//
	// required: false
	// in: query
	PageToken string `json:"page_token"`
}

Pagination Request Parameters

The `Link` HTTP header contains multiple links (`first`, `next`) formatted as: `<https://{project-slug}.projects.oryapis.com/admin/sessions?page_size=250&page_token=>; rel="first"`

For details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).

swagger:model keysetPaginationRequestParameters

type ResponseHeaders added in v0.0.491

type ResponseHeaders struct {
	// The Link HTTP Header
	//
	// The `Link` header contains a comma-delimited list of links to the following pages:
	//
	// - first: The first page of results.
	// - next: The next page of results.
	//
	// Pages are omitted if they do not exist. For example, if there is no next page, the `next` link is omitted. Examples:
	//
	//	</admin/sessions?page_size=250&page_token={last_item_uuid}; rel="first",/admin/sessions?page_size=250&page_token=>; rel="next"
	//
	Link string `json:"link"`

	// The X-Total-Count HTTP Header
	//
	// The `X-Total-Count` header contains the total number of items in the collection.
	TotalCount int `json:"x-total-count"`
}

Pagination Response Header

The `Link` HTTP header contains multiple links (`first`, `next`) formatted as: `<https://{project-slug}.projects.oryapis.com/admin/sessions?page_size=250&page_token=>; rel="first"`

For details on pagination please head over to the [pagination documentation](https://www.ory.sh/docs/ecosystem/api-design#pagination).

swagger:model keysetPaginationResponseHeaders

type StringPageToken added in v0.0.519

type StringPageToken string

func (StringPageToken) Encode added in v0.0.519

func (s StringPageToken) Encode() string

func (StringPageToken) Parse added in v0.0.519

func (s StringPageToken) Parse(idField string) map[string]string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL