Skip to content

Commit d6cfaa9

Browse files
committed
feat(zadd): add ZAddLT and ZAddGT
1 parent 206ad44 commit d6cfaa9

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
@@ -299,6 +299,8 @@ type Cmdable interface {
299299
BZPopMin(ctx context.Context, timeout time.Duration, keys ...string) *ZWithKeyCmd
300300

301301
ZAdd(ctx context.Context, key string, members ...Z) *IntCmd
302+
ZAddLT(ctx context.Context, key string, members ...Z) *IntCmd
303+
ZAddGT(ctx context.Context, key string, members ...Z) *IntCmd
302304
ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd
303305
ZAddXX(ctx context.Context, key string, members ...Z) *IntCmd
304306
ZAddArgs(ctx context.Context, key string, args ZAddArgs) *IntCmd
@@ -2353,6 +2355,22 @@ func (c cmdable) ZAdd(ctx context.Context, key string, members ...Z) *IntCmd {
23532355
})
23542356
}
23552357

2358+
// ZAddLT Redis `ZADD key LT score member [score member ...]` command.
2359+
func (c cmdable) ZAddLT(ctx context.Context, key string, members ...Z) *IntCmd {
2360+
return c.ZAddArgs(ctx, key, ZAddArgs{
2361+
LT: true,
2362+
Members: members,
2363+
})
2364+
}
2365+
2366+
// ZAddGT Redis `ZADD key GT score member [score member ...]` command.
2367+
func (c cmdable) ZAddGT(ctx context.Context, key string, members ...Z) *IntCmd {
2368+
return c.ZAddArgs(ctx, key, ZAddArgs{
2369+
GT: true,
2370+
Members: members,
2371+
})
2372+
}
2373+
23562374
// ZAddNX Redis `ZADD key NX score member [score member ...]` command.
23572375
func (c cmdable) ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd {
23582376
return c.ZAddArgs(ctx, key, ZAddArgs{

commands_test.go

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

3295+
It("should ZAddArgsLT", func() {
3296+
added, err := client.ZAddLT(ctx, "zset", redis.Z{
3297+
Score: 2,
3298+
Member: "one",
3299+
}).Result()
3300+
Expect(err).NotTo(HaveOccurred())
3301+
Expect(added).To(Equal(int64(1)))
3302+
3303+
vals, err := client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3304+
Expect(err).NotTo(HaveOccurred())
3305+
Expect(vals).To(Equal([]redis.Z{{Score: 2, Member: "one"}}))
3306+
3307+
added, err = client.ZAddLT(ctx, "zset", redis.Z{
3308+
Score: 3,
3309+
Member: "one",
3310+
}).Result()
3311+
Expect(err).NotTo(HaveOccurred())
3312+
Expect(added).To(Equal(int64(0)))
3313+
3314+
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3315+
Expect(err).NotTo(HaveOccurred())
3316+
Expect(vals).To(Equal([]redis.Z{{Score: 2, Member: "one"}}))
3317+
3318+
added, err = client.ZAddLT(ctx, "zset", redis.Z{
3319+
Score: 1,
3320+
Member: "one",
3321+
}).Result()
3322+
Expect(err).NotTo(HaveOccurred())
3323+
Expect(added).To(Equal(int64(0)))
3324+
3325+
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3326+
Expect(err).NotTo(HaveOccurred())
3327+
Expect(vals).To(Equal([]redis.Z{{Score: 1, Member: "one"}}))
3328+
})
3329+
3330+
It("should ZAddArgsGT", func() {
3331+
added, err := client.ZAddGT(ctx, "zset", redis.Z{
3332+
Score: 2,
3333+
Member: "one",
3334+
}).Result()
3335+
Expect(err).NotTo(HaveOccurred())
3336+
Expect(added).To(Equal(int64(1)))
3337+
3338+
vals, err := client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3339+
Expect(err).NotTo(HaveOccurred())
3340+
Expect(vals).To(Equal([]redis.Z{{Score: 2, Member: "one"}}))
3341+
3342+
added, err = client.ZAddGT(ctx, "zset", redis.Z{
3343+
Score: 3,
3344+
Member: "one",
3345+
}).Result()
3346+
Expect(err).NotTo(HaveOccurred())
3347+
Expect(added).To(Equal(int64(0)))
3348+
3349+
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3350+
Expect(err).NotTo(HaveOccurred())
3351+
Expect(vals).To(Equal([]redis.Z{{Score: 3, Member: "one"}}))
3352+
3353+
added, err = client.ZAddGT(ctx, "zset", redis.Z{
3354+
Score: 1,
3355+
Member: "one",
3356+
}).Result()
3357+
Expect(err).NotTo(HaveOccurred())
3358+
Expect(added).To(Equal(int64(0)))
3359+
3360+
vals, err = client.ZRangeWithScores(ctx, "zset", 0, -1).Result()
3361+
Expect(err).NotTo(HaveOccurred())
3362+
Expect(vals).To(Equal([]redis.Z{{Score: 3, Member: "one"}}))
3363+
})
3364+
32953365
It("should ZAddArgsNX", func() {
32963366
added, err := client.ZAddNX(ctx, "zset", redis.Z{
32973367
Score: 1,

0 commit comments

Comments
 (0)