1
0
mirror of https://github.com/redis/go-redis.git synced 2025-07-31 05:04:23 +03:00

Marshal time as RFC3339. Add StringCmd.Time helper.

This commit is contained in:
Vladimir Mihailenco
2019-07-25 12:21:12 +03:00
parent 6bc7daa5b1
commit 0e7fb3b12d
5 changed files with 51 additions and 5 deletions

View File

@ -2,6 +2,7 @@ package proto_test
import (
"bytes"
"encoding"
"io/ioutil"
"testing"
"time"
@ -12,6 +13,14 @@ import (
. "github.com/onsi/gomega"
)
type MyType struct{}
var _ encoding.BinaryMarshaler = (*MyType)(nil)
func (t *MyType) MarshalBinary() ([]byte, error) {
return []byte("hello"), nil
}
var _ = Describe("WriteBuffer", func() {
var buf *bytes.Buffer
var wr *proto.Writer
@ -45,16 +54,25 @@ var _ = Describe("WriteBuffer", func() {
"\r\n")))
})
It("should append marshalable args", func() {
err := wr.WriteArgs([]interface{}{time.Unix(1414141414, 0)})
It("should append time", func() {
err := wr.WriteArgs([]interface{}{time.Unix(1414141414, 0).UTC()})
Expect(err).NotTo(HaveOccurred())
err = wr.Flush()
Expect(err).NotTo(HaveOccurred())
Expect(buf.Len()).To(Equal(26))
Expect(buf.Len()).To(Equal(31))
})
It("should append marshalable args", func() {
err := wr.WriteArgs([]interface{}{&MyType{}})
Expect(err).NotTo(HaveOccurred())
err = wr.Flush()
Expect(err).NotTo(HaveOccurred())
Expect(buf.Len()).To(Equal(15))
})
})
func BenchmarkWriteBuffer_Append(b *testing.B) {

View File

@ -6,6 +6,7 @@ import (
"fmt"
"io"
"strconv"
"time"
"github.com/go-redis/redis/internal/util"
)
@ -92,6 +93,8 @@ func (w *Writer) writeArg(v interface{}) error {
} else {
return w.int(0)
}
case time.Time:
return w.string(v.Format(time.RFC3339))
case encoding.BinaryMarshaler:
b, err := v.MarshalBinary()
if err != nil {