|
@@ -310,3 +310,55 @@ func StringMap(result interface{}, err error) (map[string]string, error) {
|
|
|
}
|
|
}
|
|
|
return m, nil
|
|
return m, nil
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+// IntMap is a helper that converts an array of strings (alternating key, value)
|
|
|
|
|
+// into a map[string]int. The HGETALL commands return replies in this format.
|
|
|
|
|
+// Requires an even number of values in result.
|
|
|
|
|
+func IntMap(result interface{}, err error) (map[string]int, error) {
|
|
|
|
|
+ values, err := Values(result, err)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ if len(values)%2 != 0 {
|
|
|
|
|
+ return nil, errors.New("redigo: IntMap expects even number of values result")
|
|
|
|
|
+ }
|
|
|
|
|
+ m := make(map[string]int, len(values)/2)
|
|
|
|
|
+ for i := 0; i < len(values); i += 2 {
|
|
|
|
|
+ key, ok := values[i].([]byte)
|
|
|
|
|
+ if !ok {
|
|
|
|
|
+ return nil, errors.New("redigo: ScanMap key not a bulk string value")
|
|
|
|
|
+ }
|
|
|
|
|
+ value, err := Int(values[i+1], nil)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ m[string(key)] = value
|
|
|
|
|
+ }
|
|
|
|
|
+ return m, nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// Int64Map is a helper that converts an array of strings (alternating key, value)
|
|
|
|
|
+// into a map[string]int64. The HGETALL commands return replies in this format.
|
|
|
|
|
+// Requires an even number of values in result.
|
|
|
|
|
+func Int64Map(result interface{}, err error) (map[string]int64, error) {
|
|
|
|
|
+ values, err := Values(result, err)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ if len(values)%2 != 0 {
|
|
|
|
|
+ return nil, errors.New("redigo: Int64Map expects even number of values result")
|
|
|
|
|
+ }
|
|
|
|
|
+ m := make(map[string]int64, len(values)/2)
|
|
|
|
|
+ for i := 0; i < len(values); i += 2 {
|
|
|
|
|
+ key, ok := values[i].([]byte)
|
|
|
|
|
+ if !ok {
|
|
|
|
|
+ return nil, errors.New("redigo: ScanMap key not a bulk string value")
|
|
|
|
|
+ }
|
|
|
|
|
+ value, err := Int64(values[i+1], nil)
|
|
|
|
|
+ if err != nil {
|
|
|
|
|
+ return nil, err
|
|
|
|
|
+ }
|
|
|
|
|
+ m[string(key)] = value
|
|
|
|
|
+ }
|
|
|
|
|
+ return m, nil
|
|
|
|
|
+}
|