re-use r.URL.Query
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user