Skip to content

Commit 9664fd2

Browse files
feat(zadd): add ZAddLT and ZAddGT (#2429)
Co-authored-by: Vladimir Mihailenco <[email protected]>
1 parent 73d939e commit 9664fd2

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

commands.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,6 +302,8 @@ type Cmdable interface {
302302
BZMPop(ctx context.Context, timeout time.Duration, order string, count int64, keys ...string) *ZSliceWithKeyCmd
303303

304304
ZAdd(ctx context.Context, key string, members ...Z) *IntCmd
305+
ZAddLT(ctx context.Context, key string, members ...Z) *IntCmd
306+
ZAddGT(ctx context.Context, key string, members ...Z) *IntCmd
305307
ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd
306308
ZAddXX(ctx context.Context, key string, members ...Z) *IntCmd
307309
ZAddArgs(ctx context.Context, key string, args ZAddArgs) *IntCmd
@@ -2408,6 +2410,22 @@ func (c cmdable) ZAdd(ctx context.Context, key string, members ...Z) *IntCmd {
24082410
})
24092411
}
24102412

2413+
// ZAddLT Redis `ZADD key LT score member [score member ...]` command.
2414+
func (c cmdable) ZAddLT(ctx context.Context, key string, members ...Z) *IntCmd {
2415+
return c.ZAddArgs(ctx, key, ZAddArgs{
2416+
LT: true,
2417+
Members: members,
2418+
})
2419+
}
2420+
2421+
// ZAddGT Redis `ZADD key GT score member [score member ...]` command.
2422+
func (c cmdable) ZAddGT(ctx context.Context, key string, members ...Z) *IntCmd {
2423+
return c.ZAddArgs(ctx, key, ZAddArgs{
2424+
GT: true,
2425+
Members: members,
2426+
})
2427+
}
2428+
24112429
// ZAddNX Redis `ZADD key NX score member [score member ...]` command.
24122430
func (c cmdable) ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd {
24132431
return c.ZAddArgs(ctx, key, ZAddArgs{

commands_test.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3407,6 +3407,76 @@ var _ = Describe("Commands", func() {
34073407
Expect(vals).To(Equal([]redis.Z{{Score: 1, Member: "one"}}))
34083408
})
34093409

3410+
It("should ZAddArgsLT", func() {
3411+
added, err := client.ZAddLT(ctx, "zset", redis.Z{
3412+
Score: 2,
3413+
Member: "one",
3414+
}).Result()
3415+
Expect(err).NotTo(HaveOccurred())
3416+
Expect(added).To(Equal(int64(1)))
3417+
3418+
vals, err := client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3419+
Expect(err).NotTo(HaveOccurred())
3420+
Expect(vals).To(Equal([]redis.Z{{Score: 2, Member: "one"}}))
3421+
3422+
added, err = client.ZAddLT(ctx, "zset", redis.Z{
3423+
Score: 3,
3424+
Member: "one",
3425+
}).Result()
3426+
Expect(err).NotTo(HaveOccurred())
3427+
Expect(added).To(Equal(int64(0)))
3428+
3429+
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3430+
Expect(err).NotTo(HaveOccurred())
3431+
Expect(vals).To(Equal([]redis.Z{{Score: 2, Member: "one"}}))
3432+
3433+
added, err = client.ZAddLT(ctx, "zset", redis.Z{
3434+
Score: 1,
3435+
Member: "one",
3436+
}).Result()
3437+
Expect(err).NotTo(HaveOccurred())
3438+
Expect(added).To(Equal(int64(0)))
3439+
3440+
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3441+
Expect(err).NotTo(HaveOccurred())
3442+
Expect(vals).To(Equal([]redis.Z{{Score: 1, Member: "one"}}))
3443+
})
3444+
3445+
It("should ZAddArgsGT", func() {
3446+
added, err := client.ZAddGT(ctx, "zset", redis.Z{
3447+
Score: 2,
3448+
Member: "one",
3449+
}).Result()
3450+
Expect(err).NotTo(HaveOccurred())
3451+
Expect(added).To(Equal(int64(1)))
3452+
3453+
vals, err := client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3454+
Expect(err).NotTo(HaveOccurred())
3455+
Expect(vals).To(Equal([]redis.Z{{Score: 2, Member: "one"}}))
3456+
3457+
added, err = client.ZAddGT(ctx, "zset", redis.Z{
3458+
Score: 3,
3459+
Member: "one",
3460+
}).Result()
3461+
Expect(err).NotTo(HaveOccurred())
3462+
Expect(added).To(Equal(int64(0)))
3463+
3464+
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3465+
Expect(err).NotTo(HaveOccurred())
3466+
Expect(vals).To(Equal([]redis.Z{{Score: 3, Member: "one"}}))
3467+
3468+
added, err = client.ZAddGT(ctx, "zset", redis.Z{
3469+
Score: 1,
3470+
Member: "one",
3471+
}).Result()
3472+
Expect(err).NotTo(HaveOccurred())
3473+
Expect(added).To(Equal(int64(0)))
3474+
3475+
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3476+
Expect(err).NotTo(HaveOccurred())
3477+
Expect(vals).To(Equal([]redis.Z{{Score: 3, Member: "one"}}))
3478+
})
3479+
34103480
It("should ZAddArgsNX", func() {
34113481
added, err := client.ZAddNX(ctx, "zset", redis.Z{
34123482
Score: 1,

0 commit comments

Comments
 (0)