package param

const (
	defaultPageNumber = 1
	dafaultPageSize   = 10
)

type PaginationRequest struct {
	PageSize   uint
	PageNumber uint
}

type PaginationResponse struct {
	PageSize   uint
	PageNumber uint
	Total      uint
}

func (p *PaginationRequest) GetPageNumber() uint {
	if p.PageNumber <= 0 {
		p.PageNumber = defaultPageNumber
	}

	return p.PageNumber
}

func (p *PaginationRequest) GetOffset() uint {
	return (p.GetPageNumber() - 1) * p.GetPageSize()
}

func (p *PaginationRequest) GetPageSize() uint {
	validPageSizes := []uint{10, 25, 50, 100}
	for _, size := range validPageSizes {
		if p.PageSize == size {
			return size
		}
	}

	return dafaultPageSize
}
