package grmi import ( "strconv" ) const ( PageSize = "pageSize" _PageSize = "_pageSize" PageNumber = "pageNumber" _PageNumber = "_pageNumber" ) type Paging struct { Number int64 Size int64 } func NewPaging() *Paging { return &Paging{Number: 1, Size: 10} } func (self *Paging) Offset() int64 { return (self.Number - 1) * self.Size } func (self *Paging) Fill(urlParameters map[string]string) { size, _ := getPageSize(urlParameters) number, _ := getPageIndex(urlParameters) self.Size = size self.Number = number } func getValue(urlParameters map[string]string, names []string, defaultValue int64) (int64, bool) { for _, name := range names { if urlParameter, ok := urlParameters[name]; ok { value, err := strconv.ParseInt(urlParameter, 10, 64) if err == nil { return value, true } } } return defaultValue, false } func getPageIndex(urlParameters map[string]string) (int64, bool) { return getValue(urlParameters, []string{_PageNumber, PageNumber}, 1) } func getPageSize(urlParameters map[string]string) (int64, bool) { return getValue(urlParameters, []string{_PageSize, PageSize}, 1) }