diff --git a/commands.go b/commands.go index 872c35c..710aef2 100644 --- a/commands.go +++ b/commands.go @@ -140,7 +140,7 @@ type Cmdable interface { LLen(key string) *IntCmd LPop(key string) *StringCmd LPush(key string, values ...interface{}) *IntCmd - LPushX(key string, value interface{}) *IntCmd + LPushX(key string, values ...interface{}) *IntCmd LRange(key string, start, stop int64) *StringSliceCmd LRem(key string, count int64, value interface{}) *IntCmd LSet(key string, index int64, value interface{}) *StatusCmd @@ -148,7 +148,7 @@ type Cmdable interface { RPop(key string) *StringCmd RPopLPush(source, destination string) *StringCmd RPush(key string, values ...interface{}) *IntCmd - RPushX(key string, value interface{}) *IntCmd + RPushX(key string, values ...interface{}) *IntCmd SAdd(key string, members ...interface{}) *IntCmd SCard(key string) *IntCmd SDiff(keys ...string) *StringSliceCmd @@ -1087,8 +1087,12 @@ func (c cmdable) LPush(key string, values ...interface{}) *IntCmd { return cmd } -func (c cmdable) LPushX(key string, value interface{}) *IntCmd { - cmd := NewIntCmd("lpushx", key, value) +func (c cmdable) LPushX(key string, values ...interface{}) *IntCmd { + args := make([]interface{}, 2, 2+len(values)) + args[0] = "lpushx" + args[1] = key + args = appendArgs(args, values) + cmd := NewIntCmd(args...) c(cmd) return cmd } @@ -1149,8 +1153,12 @@ func (c cmdable) RPush(key string, values ...interface{}) *IntCmd { return cmd } -func (c cmdable) RPushX(key string, value interface{}) *IntCmd { - cmd := NewIntCmd("rpushx", key, value) +func (c cmdable) RPushX(key string, values ...interface{}) *IntCmd { + args := make([]interface{}, 2, 2+len(values)) + args[0] = "rpushx" + args[1] = key + args = appendArgs(args, values) + cmd := NewIntCmd(args...) c(cmd) return cmd } diff --git a/commands_test.go b/commands_test.go index 13c636b..7fa9b73 100644 --- a/commands_test.go +++ b/commands_test.go @@ -1652,6 +1652,14 @@ var _ = Describe("Commands", func() { Expect(lPushX.Err()).NotTo(HaveOccurred()) Expect(lPushX.Val()).To(Equal(int64(2))) + lPush = client.LPush("list1", "three") + Expect(lPush.Err()).NotTo(HaveOccurred()) + Expect(lPush.Val()).To(Equal(int64(1))) + + lPushX = client.LPushX("list1", "two", "one") + Expect(lPushX.Err()).NotTo(HaveOccurred()) + Expect(lPushX.Val()).To(Equal(int64(3))) + lPushX = client.LPushX("list2", "Hello") Expect(lPushX.Err()).NotTo(HaveOccurred()) Expect(lPushX.Val()).To(Equal(int64(0))) @@ -1660,6 +1668,10 @@ var _ = Describe("Commands", func() { Expect(lRange.Err()).NotTo(HaveOccurred()) Expect(lRange.Val()).To(Equal([]string{"Hello", "World"})) + lRange = client.LRange("list1", 0, -1) + Expect(lRange.Err()).NotTo(HaveOccurred()) + Expect(lRange.Val()).To(Equal([]string{"one", "two", "three"})) + lRange = client.LRange("list2", 0, -1) Expect(lRange.Err()).NotTo(HaveOccurred()) Expect(lRange.Val()).To(Equal([]string{})) @@ -1808,6 +1820,14 @@ var _ = Describe("Commands", func() { Expect(rPushX.Err()).NotTo(HaveOccurred()) Expect(rPushX.Val()).To(Equal(int64(2))) + rPush = client.RPush("list1", "one") + Expect(rPush.Err()).NotTo(HaveOccurred()) + Expect(rPush.Val()).To(Equal(int64(1))) + + rPushX = client.RPushX("list1", "two", "three") + Expect(rPushX.Err()).NotTo(HaveOccurred()) + Expect(rPushX.Val()).To(Equal(int64(3))) + rPushX = client.RPushX("list2", "World") Expect(rPushX.Err()).NotTo(HaveOccurred()) Expect(rPushX.Val()).To(Equal(int64(0))) @@ -1816,6 +1836,10 @@ var _ = Describe("Commands", func() { Expect(lRange.Err()).NotTo(HaveOccurred()) Expect(lRange.Val()).To(Equal([]string{"Hello", "World"})) + lRange = client.LRange("list1", 0, -1) + Expect(lRange.Err()).NotTo(HaveOccurred()) + Expect(lRange.Val()).To(Equal([]string{"one", "two", "three"})) + lRange = client.LRange("list2", 0, -1) Expect(lRange.Err()).NotTo(HaveOccurred()) Expect(lRange.Val()).To(Equal([]string{}))