From 61739320e846571f23d076bdac6db549a42f682a Mon Sep 17 00:00:00 2001 From: almorgv Date: Fri, 1 Dec 2023 14:27:26 +0000 Subject: [PATCH] Add ZAddGT and ZAddLT commands --- pool.go | 16 ++++++++++++++ pool_test.go | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/pool.go b/pool.go index 0618cb4..9f2f642 100644 --- a/pool.go +++ b/pool.go @@ -1574,6 +1574,22 @@ func (p *Pool) ZAddXX(ctx context.Context, key string, members ...redis.Z) *redi return conn.ZAddXX(ctx, key, members...) } +func (p *Pool) ZAddGT(ctx context.Context, key string, members ...redis.Z) *redis.IntCmd { + conn, err := p.connFactory.getMasterConn(key) + if err != nil { + return newErrorIntCmd(err) + } + return conn.ZAddGT(ctx, key, members...) +} + +func (p *Pool) ZAddLT(ctx context.Context, key string, members ...redis.Z) *redis.IntCmd { + conn, err := p.connFactory.getMasterConn(key) + if err != nil { + return newErrorIntCmd(err) + } + return conn.ZAddLT(ctx, key, members...) +} + func (p *Pool) ZAddCh(ctx context.Context, key string, members ...*redis.Z) *redis.IntCmd { conn, err := p.connFactory.getMasterConn(key) if err != nil { diff --git a/pool_test.go b/pool_test.go index 8be14b2..2660c0a 100644 --- a/pool_test.go +++ b/pool_test.go @@ -1191,6 +1191,67 @@ var _ = Describe("Pool", func() { } }) + + It("ZAddGT", func() { + for _, pool := range pools { + _, err := pool.ZAddGT(ctx, "key", redis.Z{ + Score: 2, + Member: "one", + }).Result() + Expect(err).NotTo(HaveOccurred()) + + _, err = pool.ZAddGT(ctx, "key", redis.Z{ + Score: 1, + Member: "one", + }).Result() + Expect(err).NotTo(HaveOccurred()) + + score, err := pool.ZScore(ctx, "key", "one").Result() + Expect(err).NotTo(HaveOccurred()) + Expect(score).To(Equal(float64(2))) + + _, err = pool.ZAddGT(ctx, "key", redis.Z{ + Score: 3, + Member: "one", + }).Result() + Expect(err).NotTo(HaveOccurred()) + + score, err = pool.ZScore(ctx, "key", "one").Result() + Expect(err).NotTo(HaveOccurred()) + Expect(score).To(Equal(float64(3))) + } + }) + + It("ZAddLT", func() { + for _, pool := range pools { + _, err := pool.ZAddLT(ctx, "key", redis.Z{ + Score: 2, + Member: "one", + }).Result() + Expect(err).NotTo(HaveOccurred()) + + _, err = pool.ZAddLT(ctx, "key", redis.Z{ + Score: 3, + Member: "one", + }).Result() + Expect(err).NotTo(HaveOccurred()) + + score, err := pool.ZScore(ctx, "key", "one").Result() + Expect(err).NotTo(HaveOccurred()) + Expect(score).To(Equal(float64(2))) + + _, err = pool.ZAddLT(ctx, "key", redis.Z{ + Score: 1, + Member: "one", + }).Result() + Expect(err).NotTo(HaveOccurred()) + + score, err = pool.ZScore(ctx, "key", "one").Result() + Expect(err).NotTo(HaveOccurred()) + Expect(score).To(Equal(float64(1))) + } + }) + It("ZAddCh", func() { for _, pool := range pools { _, err := pool.ZAdd(ctx, "key", redis.Z{