Closed
Description
Issue tracker is used for reporting bugs and discussing new features. Please use
stackoverflow for supporting issues.
Expected Behavior
type MyHash struct {
Key1 string `redis:"key1"`;
Key2 time.Time `redis:"key2,omitempty"`
}
should be
hset myhash key1 value1
Current Behavior
hset myhash key1 value1 key2 0001-01-01T00:00:00Z
Possible Solution
https://github.com/redis/go-redis/blob/master/commands.go#L142
func isEmptyValue(v reflect.Value) bool {
switch v.Kind() {
case reflect.Array, reflect.Map, reflect.Slice, reflect.String:
return v.Len() == 0
case reflect.Bool:
return !v.Bool()
case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
return v.Int() == 0
case reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64, reflect.Uintptr:
return v.Uint() == 0
case reflect.Float32, reflect.Float64:
return v.Float() == 0
case reflect.Interface, reflect.Pointer:
return v.IsNil()
++++++++++++++++++++++++++++++++++++++++++++++
case reflect.Struct:
return v.IsZero()
++++++++++++++++++++++++++++++++++++++++++++++
}
return false
}
Steps to Reproduce
type MyHash struct {
Key1 string `redis:"key1"`;
Key2 time.Time `redis:"key2,omitempty"`
}
data := MyHash{
Key1 : "value1",
Key2 : time.Time{},
}
if err := rdb.HSet(ctx, "key", model1).Err(); err != nil {
panic(err)
}
Context (Environment)
Detailed Description
omitempty tag does not work for empty time.Time struct field when using HSet
Possible Implementation
If you agree with the proposal I made in the title "Possible Solution," I can proceed to complete this PR.