for testing and deploying your application
for finding and fixing issues
for empowering human code reviews
package database
// PaginationOption - Option type
type PaginationOption func(*Pagination)
// Size -
func Size(size uint32) PaginationOption {
return func(c *Pagination) {
c.size = size
}
// Token -
func Token(token string) PaginationOption {
c.token = token
// Pagination -
type Pagination struct {
size uint32
token string
// NewPagination -
func NewPagination(opts ...PaginationOption) Pagination {
pagination := &Pagination{}
// Custom options
for _, opt := range opts {
opt(pagination)
return *pagination
// PageSize -
func (p Pagination) PageSize() uint32 {
return p.size
func (p Pagination) Token() string {
return p.token
// CursorPaginationOption - Option type
type CursorPaginationOption func(*CursorPagination)
// CursorPagination -
type CursorPagination struct {
cursor string
sort string
limit uint32
// NewCursorPagination -
func NewCursorPagination(opts ...CursorPaginationOption) CursorPagination {
pagination := &CursorPagination{}
// Cursor -
func Cursor(cursor string) CursorPaginationOption {
return func(c *CursorPagination) {
c.cursor = cursor
// Sort -
func Sort(sort string) CursorPaginationOption {
c.sort = sort
// Limit -
func Limit(limit uint32) CursorPaginationOption {
c.limit = limit
func (p CursorPagination) Cursor() string {
return p.cursor
func (p CursorPagination) Sort() string {
return p.sort
func (p CursorPagination) Limit() uint32 {
return p.limit