package urlvalues import ( "strconv" "time" "github.com/go-pg/pg/internal/struct_filter" ) type Values map[string][]string func (v Values) Has(name string) bool { _, ok := v[name] return ok } func (v Values) SetDefault(name string, values ...string) { if !v.Has(name) { v[name] = values } } func (v Values) Strings(name string) []string { return v[name] } func (v Values) String(name string) string { values := v.Strings(name) if len(values) == 0 { return "" } return values[0] } func (v Values) Bool(name string) (bool, error) { if !v.Has(name) { return false, nil } s := v.String(name) if s == "" { return true, nil } return strconv.ParseBool(s) } func (v Values) MaybeBool(name string) bool { flag, _ := v.Bool(name) return flag } func (v Values) Int(name string) (int, error) { s := v.String(name) if s == "" { return 0, nil } return strconv.Atoi(s) } func (v Values) MaybeInt(name string) int { n, _ := v.Int(name) return n } func (v Values) Int64(name string) (int64, error) { s := v.String(name) if s == "" { return 0, nil } return strconv.ParseInt(s, 10, 64) } func (v Values) MaybeInt64(name string) int64 { n, _ := v.Int64(name) return n } func (v Values) Float64(name string) (float64, error) { s := v.String(name) if s == "" { return 0, nil } return strconv.ParseFloat(s, 64) } func (v Values) MaybeFloat64(name string) float64 { n, _ := v.Float64(name) return n } func (v Values) Time(name string) (time.Time, error) { s := v.String(name) if s == "" { return time.Time{}, nil } return struct_filter.ParseTime(s) } func (v Values) MaybeTime(name string) time.Time { tm, _ := v.Time(name) return tm } func (v Values) Duration(name string) (time.Duration, error) { s := v.String(name) if s == "" { return 0, nil } return time.ParseDuration(s) } func (v Values) MaybeDuration(name string) time.Duration { dur, _ := v.Duration(name) return dur } func (v Values) Pager() *Pager { return NewPager(v) }