From a8a196f328ae605de91d795d168535d369ba5fde Mon Sep 17 00:00:00 2001 From: leizihui Date: Fri, 9 Apr 2021 11:27:11 +0800 Subject: [PATCH 1/2] hmset support map[string]string --- commands.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/commands.go b/commands.go index 6f69ff03..5b2f4c6a 100644 --- a/commands.go +++ b/commands.go @@ -67,6 +67,11 @@ func appendArg(dst []interface{}, arg interface{}) []interface{} { dst = append(dst, k, v) } return dst + case map[string]string: + for k, v := range arg { + dst = append(dst, k, v) + } + return dst default: return append(dst, arg) } From fc72d5f0d09087cd498d08ba7731903e56d08785 Mon Sep 17 00:00:00 2001 From: Chris Mague Date: Tue, 13 Apr 2021 17:28:55 -0700 Subject: [PATCH 2/2] add LMove with tests --- commands.go | 7 +++++++ commands_test.go | 22 ++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/commands.go b/commands.go index 5b2f4c6a..37746334 100644 --- a/commands.go +++ b/commands.go @@ -191,6 +191,7 @@ type Cmdable interface { RPopLPush(ctx context.Context, source, destination string) *StringCmd RPush(ctx context.Context, key string, values ...interface{}) *IntCmd RPushX(ctx context.Context, key string, values ...interface{}) *IntCmd + LMove(ctx context.Context, source, destination, srcpos, destpos string) *StringCmd SAdd(ctx context.Context, key string, members ...interface{}) *IntCmd SCard(ctx context.Context, key string) *IntCmd @@ -1431,6 +1432,12 @@ func (c cmdable) RPushX(ctx context.Context, key string, values ...interface{}) return cmd } +func (c cmdable) LMove(ctx context.Context, source, destination, srcpos, destpos string) *StringCmd { + cmd := NewStringCmd(ctx, "lmove", source, destination, srcpos, destpos) + _ = c(ctx, cmd) + return cmd +} + //------------------------------------------------------------------------------ func (c cmdable) SAdd(ctx context.Context, key string, members ...interface{}) *IntCmd { diff --git a/commands_test.go b/commands_test.go index 313d08c4..e927c58d 100644 --- a/commands_test.go +++ b/commands_test.go @@ -2317,6 +2317,28 @@ var _ = Describe("Commands", func() { Expect(lRange.Err()).NotTo(HaveOccurred()) Expect(lRange.Val()).To(Equal([]string{})) }) + + It("should LMove", func() { + rPush := client.RPush(ctx, "lmove1", "ichi") + Expect(rPush.Err()).NotTo(HaveOccurred()) + Expect(rPush.Val()).To(Equal(int64(1))) + + rPush = client.RPush(ctx, "lmove1", "ni") + Expect(rPush.Err()).NotTo(HaveOccurred()) + Expect(rPush.Val()).To(Equal(int64(2))) + + rPush = client.RPush(ctx, "lmove1", "san") + Expect(rPush.Err()).NotTo(HaveOccurred()) + Expect(rPush.Val()).To(Equal(int64(3))) + + lMove := client.LMove(ctx, "lmove1", "lmove2", "RIGHT", "LEFT") + Expect(lMove.Err()).NotTo(HaveOccurred()) + Expect(lMove.Val()).To(Equal("san")) + + lRange := client.LRange(ctx, "lmove2", 0, -1) + Expect(lRange.Err()).NotTo(HaveOccurred()) + Expect(lRange.Val()).To(Equal([]string{"san"})) + }) }) Describe("sets", func() {