forked from mirror/redis
Merge pull request #1930 from Pyrodash/master
feat: add support for time.Duration write and scan
This commit is contained in:
commit
a52a508bbf
|
@ -105,6 +105,13 @@ func Scan(b []byte, v interface{}) error {
|
||||||
var err error
|
var err error
|
||||||
*v, err = time.Parse(time.RFC3339Nano, util.BytesToString(b))
|
*v, err = time.Parse(time.RFC3339Nano, util.BytesToString(b))
|
||||||
return err
|
return err
|
||||||
|
case *time.Duration:
|
||||||
|
n, err := util.ParseInt(b, 10, 64)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
*v = time.Duration(n)
|
||||||
|
return nil
|
||||||
case encoding.BinaryUnmarshaler:
|
case encoding.BinaryUnmarshaler:
|
||||||
return v.UnmarshalBinary(b)
|
return v.UnmarshalBinary(b)
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -98,6 +98,8 @@ func (w *Writer) WriteArg(v interface{}) error {
|
||||||
case time.Time:
|
case time.Time:
|
||||||
w.numBuf = v.AppendFormat(w.numBuf[:0], time.RFC3339Nano)
|
w.numBuf = v.AppendFormat(w.numBuf[:0], time.RFC3339Nano)
|
||||||
return w.bytes(w.numBuf)
|
return w.bytes(w.numBuf)
|
||||||
|
case time.Duration:
|
||||||
|
return w.int(v.Nanoseconds())
|
||||||
case encoding.BinaryMarshaler:
|
case encoding.BinaryMarshaler:
|
||||||
b, err := v.MarshalBinary()
|
b, err := v.MarshalBinary()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -300,6 +300,18 @@ var _ = Describe("Client", func() {
|
||||||
Expect(tm2).To(BeTemporally("==", tm))
|
Expect(tm2).To(BeTemporally("==", tm))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("should set and scan durations", func() {
|
||||||
|
duration := 10 * time.Minute
|
||||||
|
err := client.Set(ctx, "duration", duration, 0).Err()
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
var duration2 time.Duration
|
||||||
|
err = client.Get(ctx, "duration").Scan(&duration2)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
Expect(duration2).To(Equal(duration))
|
||||||
|
})
|
||||||
|
|
||||||
It("should Conn", func() {
|
It("should Conn", func() {
|
||||||
err := client.Conn(ctx).Get(ctx, "this-key-does-not-exist").Err()
|
err := client.Conn(ctx).Get(ctx, "this-key-does-not-exist").Err()
|
||||||
Expect(err).To(Equal(redis.Nil))
|
Expect(err).To(Equal(redis.Nil))
|
||||||
|
|
Loading…
Reference in New Issue