Skip to content

Commit 8ec54eb

Browse files
committed
feat(zadd): add ZAddLT and ZAddGT
1 parent bd0d1c2 commit 8ec54eb

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

303303
ZAdd(ctx context.Context, key string, members ...Z) *IntCmd
304+
ZAddLT(ctx context.Context, key string, members ...Z) *IntCmd
305+
ZAddGT(ctx context.Context, key string, members ...Z) *IntCmd
304306
ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd
305307
ZAddXX(ctx context.Context, key string, members ...Z) *IntCmd
306308
ZAddArgs(ctx context.Context, key string, args ZAddArgs) *IntCmd
@@ -2386,6 +2388,22 @@ func (c cmdable) ZAdd(ctx context.Context, key string, members ...Z) *IntCmd {
23862388
})
23872389
}
23882390

2391+
// ZAddLT Redis `ZADD key LT score member [score member ...]` command.
2392+
func (c cmdable) ZAddLT(ctx context.Context, key string, members ...Z) *IntCmd {
2393+
return c.ZAddArgs(ctx, key, ZAddArgs{
2394+
LT: true,
2395+
Members: members,
2396+
})
2397+
}
2398+
2399+
// ZAddGT Redis `ZADD key GT score member [score member ...]` command.
2400+
func (c cmdable) ZAddGT(ctx context.Context, key string, members ...Z) *IntCmd {
2401+
return c.ZAddArgs(ctx, key, ZAddArgs{
2402+
GT: true,
2403+
Members: members,
2404+
})
2405+
}
2406+
23892407
// ZAddNX Redis `ZADD key NX score member [score member ...]` command.
23902408
func (c cmdable) ZAddNX(ctx context.Context, key string, members ...Z) *IntCmd {
23912409
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)