Making LpushX and RpushX variadic

This commit is contained in:
sjindal995 2019-07-18 16:48:09 +05:30
parent 94359d94c1
commit 5c3de7537a
2 changed files with 40 additions and 6 deletions

View File

@ -140,7 +140,7 @@ type Cmdable interface {
LLen(key string) *IntCmd LLen(key string) *IntCmd
LPop(key string) *StringCmd LPop(key string) *StringCmd
LPush(key string, values ...interface{}) *IntCmd LPush(key string, values ...interface{}) *IntCmd
LPushX(key string, value interface{}) *IntCmd LPushX(key string, value interface{}, values ...interface{}) *IntCmd
LRange(key string, start, stop int64) *StringSliceCmd LRange(key string, start, stop int64) *StringSliceCmd
LRem(key string, count int64, value interface{}) *IntCmd LRem(key string, count int64, value interface{}) *IntCmd
LSet(key string, index int64, value interface{}) *StatusCmd LSet(key string, index int64, value interface{}) *StatusCmd
@ -148,7 +148,7 @@ type Cmdable interface {
RPop(key string) *StringCmd RPop(key string) *StringCmd
RPopLPush(source, destination string) *StringCmd RPopLPush(source, destination string) *StringCmd
RPush(key string, values ...interface{}) *IntCmd RPush(key string, values ...interface{}) *IntCmd
RPushX(key string, value interface{}) *IntCmd RPushX(key string, value interface{}, values ...interface{}) *IntCmd
SAdd(key string, members ...interface{}) *IntCmd SAdd(key string, members ...interface{}) *IntCmd
SCard(key string) *IntCmd SCard(key string) *IntCmd
SDiff(keys ...string) *StringSliceCmd SDiff(keys ...string) *StringSliceCmd
@ -1087,8 +1087,13 @@ func (c cmdable) LPush(key string, values ...interface{}) *IntCmd {
return cmd return cmd
} }
func (c cmdable) LPushX(key string, value interface{}) *IntCmd { func (c cmdable) LPushX(key string, value interface{}, values ...interface{}) *IntCmd {
cmd := NewIntCmd("lpushx", key, value) args := make([]interface{}, 3, 3+len(values))
args[0] = "lpushx"
args[1] = key
args[2] = value
args = appendArgs(args, values)
cmd := NewIntCmd(args...)
c(cmd) c(cmd)
return cmd return cmd
} }
@ -1149,8 +1154,13 @@ func (c cmdable) RPush(key string, values ...interface{}) *IntCmd {
return cmd return cmd
} }
func (c cmdable) RPushX(key string, value interface{}) *IntCmd { func (c cmdable) RPushX(key string, value interface{}, values ...interface{}) *IntCmd {
cmd := NewIntCmd("rpushx", key, value) args := make([]interface{}, 3, 3+len(values))
args[0] = "rpushx"
args[1] = key
args[2] = value
args = appendArgs(args, values)
cmd := NewIntCmd(args...)
c(cmd) c(cmd)
return cmd return cmd
} }

View File

@ -1652,6 +1652,14 @@ var _ = Describe("Commands", func() {
Expect(lPushX.Err()).NotTo(HaveOccurred()) Expect(lPushX.Err()).NotTo(HaveOccurred())
Expect(lPushX.Val()).To(Equal(int64(2))) 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") lPushX = client.LPushX("list2", "Hello")
Expect(lPushX.Err()).NotTo(HaveOccurred()) Expect(lPushX.Err()).NotTo(HaveOccurred())
Expect(lPushX.Val()).To(Equal(int64(0))) Expect(lPushX.Val()).To(Equal(int64(0)))
@ -1660,6 +1668,10 @@ var _ = Describe("Commands", func() {
Expect(lRange.Err()).NotTo(HaveOccurred()) Expect(lRange.Err()).NotTo(HaveOccurred())
Expect(lRange.Val()).To(Equal([]string{"Hello", "World"})) 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) lRange = client.LRange("list2", 0, -1)
Expect(lRange.Err()).NotTo(HaveOccurred()) Expect(lRange.Err()).NotTo(HaveOccurred())
Expect(lRange.Val()).To(Equal([]string{})) Expect(lRange.Val()).To(Equal([]string{}))
@ -1808,6 +1820,14 @@ var _ = Describe("Commands", func() {
Expect(rPushX.Err()).NotTo(HaveOccurred()) Expect(rPushX.Err()).NotTo(HaveOccurred())
Expect(rPushX.Val()).To(Equal(int64(2))) 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") rPushX = client.RPushX("list2", "World")
Expect(rPushX.Err()).NotTo(HaveOccurred()) Expect(rPushX.Err()).NotTo(HaveOccurred())
Expect(rPushX.Val()).To(Equal(int64(0))) Expect(rPushX.Val()).To(Equal(int64(0)))
@ -1816,6 +1836,10 @@ var _ = Describe("Commands", func() {
Expect(lRange.Err()).NotTo(HaveOccurred()) Expect(lRange.Err()).NotTo(HaveOccurred())
Expect(lRange.Val()).To(Equal([]string{"Hello", "World"})) 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) lRange = client.LRange("list2", 0, -1)
Expect(lRange.Err()).NotTo(HaveOccurred()) Expect(lRange.Err()).NotTo(HaveOccurred())
Expect(lRange.Val()).To(Equal([]string{})) Expect(lRange.Val()).To(Equal([]string{}))