github.com/kubeshop/testkube@v1.17.23/pkg/server/pager.go (about) 1 package server 2 3 import ( 4 "strconv" 5 6 "github.com/gofiber/fiber/v2" 7 ) 8 9 const ( 10 MaxLimit = 1000 11 DefaultLimit = 100 12 DefaultOffset = 100 13 ) 14 15 // Pager is abstracion to handle data grid like data paging 16 type Pager struct { 17 Limit int 18 Offset int 19 NextID string 20 } 21 22 // GetPager returns new configured Pager instance 23 func (s HTTPServer) GetPager(c *fiber.Ctx) Pager { 24 limit, err := strconv.Atoi(c.Query("limit", "100")) 25 if err != nil || limit < 1 { 26 limit = DefaultLimit 27 } else if limit > MaxLimit { 28 limit = MaxLimit 29 } 30 31 offset, err := strconv.Atoi(c.Query("offset", "100")) 32 if err != nil || limit < 1 { 33 offset = DefaultLimit 34 } else if limit > MaxLimit { 35 offset = MaxLimit 36 } 37 38 return Pager{ 39 Limit: limit, 40 Offset: offset, 41 NextID: c.Query("nextID", ""), 42 } 43 }