From 3c4d1b464c638a4282550011514e3778934fc0b1 Mon Sep 17 00:00:00 2001 From: Ankit Patial Date: Fri, 20 Feb 2026 16:54:14 +0530 Subject: [PATCH] re-use r.URL.Query --- request/pager.go | 14 ++++++++------ request/query.go | 8 ++++---- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/request/pager.go b/request/pager.go index 685e67b..2fbde83 100644 --- a/request/pager.go +++ b/request/pager.go @@ -57,23 +57,25 @@ func (i *Pager) Limit() int { // GetPager info from request's query parameters func GetPager(r *http.Request) Pager { + q := r.URL.Query() + p := Pager{ Page: 1, Size: 20, OrderAsc: new(true), } - if v := r.URL.Query().Get("q"); v != "" { + if v := q.Get("q"); v != "" { p.Search = strings.TrimSpace(v) } - if v := r.URL.Query().Get("pg"); v != "" { + if v := q.Get("pg"); v != "" { if vv, err := strconv.Atoi(v); err == nil && vv > 0 { p.Page = vv } } - if v := r.URL.Query().Get("pg_s"); v != "" { + if v := q.Get("pg_s"); v != "" { if vv, err := strconv.Atoi(v); err == nil && vv > 0 { if vv > MaxPageSize { vv = MaxPageSize @@ -82,11 +84,11 @@ func GetPager(r *http.Request) Pager { } } - if v := r.URL.Query().Get("pg_ob"); v != "" { + if v := q.Get("pg_ob"); v != "" { p.OrderBy = &v } - if v := r.URL.Query().Get("pg_o"); v != "" { + if v := q.Get("pg_o"); v != "" { switch strings.ToLower(v) { case "asc": p.OrderAsc = new(true) @@ -95,7 +97,7 @@ func GetPager(r *http.Request) Pager { } } - if v := r.URL.Query().Get("pg_t"); v == "n" { + if v := q.Get("pg_t"); v == "n" { p.TotalNeeded = true } diff --git a/request/query.go b/request/query.go index 9553e95..e4e62d2 100644 --- a/request/query.go +++ b/request/query.go @@ -19,13 +19,13 @@ type Number interface { // NumberParam from request query string func NumberParam[T Number](r *http.Request, key string) (T, error) { var noop T - if !r.URL.Query().Has(key) { + q := r.URL.Query() + if !q.Has(key) { return noop, fmt.Errorf("query param: %q is missing", key) } - p := r.URL.Query().Get(key) - t := reflect.TypeOf(noop) - k := t.Kind() + p := q.Get(key) + k := reflect.TypeOf(noop).Kind() // float param if k == reflect.Float32 || k == reflect.Float64 { n, err := strconv.ParseFloat(p, 64)