From db2321cb5743e2b09abe8ec184c0b500c0e3bcb3 Mon Sep 17 00:00:00 2001 From: Oleg Laktyushkin Date: Mon, 4 Nov 2024 18:08:12 +0300 Subject: [PATCH 1/4] added `Do` method for raw query by single conn from `pool.Conn()` --- universal.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/universal.go b/universal.go index f4d2d7598..634dacb54 100644 --- a/universal.go +++ b/universal.go @@ -228,6 +228,12 @@ type UniversalClient interface { PoolStats() *PoolStats } +func (c cmdable) Do(ctx context.Context, args ...interface{}) *Cmd { + cmd := NewCmd(ctx, args) + _ = c(ctx, cmd) + return cmd +} + var ( _ UniversalClient = (*Client)(nil) _ UniversalClient = (*ClusterClient)(nil) From 48f16d8e7d36a5dd73921b99252eb4fd90f4bacd Mon Sep 17 00:00:00 2001 From: Oleg Laktyushkin Date: Fri, 21 Feb 2025 14:28:26 +0300 Subject: [PATCH 2/4] added test to cmdble Do method --- do.go | 9 +++++++++ do_test.go | 27 +++++++++++++++++++++++++++ universal.go | 6 ------ 3 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 do.go create mode 100644 do_test.go diff --git a/do.go b/do.go new file mode 100644 index 000000000..bcc446864 --- /dev/null +++ b/do.go @@ -0,0 +1,9 @@ +package redis + +import "context" + +func (c cmdable) Do(ctx context.Context, args ...interface{}) *Cmd { + cmd := NewCmd(ctx, args) + _ = c(ctx, cmd) + return cmd +} diff --git a/do_test.go b/do_test.go new file mode 100644 index 000000000..5a230c7b6 --- /dev/null +++ b/do_test.go @@ -0,0 +1,27 @@ +package redis_test + +import ( + . "github.com/bsm/ginkgo/v2" + . "github.com/bsm/gomega" + + "github.com/redis/go-redis/v9" +) + +var _ = Describe("Do cmdble", func() { + var client *redis.Client + + BeforeEach(func() { + client = redis.NewClient(redisOptions()) + Expect(client.FlushDB(ctx).Err()).NotTo(HaveOccurred()) + }) + + AfterEach(func() { + client.Close() + }) + + It("should pong with Do cmd", func() { + result := client.Conn().Do(ctx, "PING") + Expect(result.Result()).To(Equal("PONG")) + Expect(result.Err()).NotTo(HaveOccurred()) + }) +}) diff --git a/universal.go b/universal.go index 634dacb54..f4d2d7598 100644 --- a/universal.go +++ b/universal.go @@ -228,12 +228,6 @@ type UniversalClient interface { PoolStats() *PoolStats } -func (c cmdable) Do(ctx context.Context, args ...interface{}) *Cmd { - cmd := NewCmd(ctx, args) - _ = c(ctx, cmd) - return cmd -} - var ( _ UniversalClient = (*Client)(nil) _ UniversalClient = (*ClusterClient)(nil) From 6cf3abc7d53e7d49c9fcfb7b8a0581e01a92e6d0 Mon Sep 17 00:00:00 2001 From: Oleg Laktyushkin Date: Fri, 28 Feb 2025 15:23:01 +0300 Subject: [PATCH 3/4] fixed test --- do.go | 2 +- do_test.go | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/do.go b/do.go index bcc446864..ecd595778 100644 --- a/do.go +++ b/do.go @@ -3,7 +3,7 @@ package redis import "context" func (c cmdable) Do(ctx context.Context, args ...interface{}) *Cmd { - cmd := NewCmd(ctx, args) + cmd := NewCmd(ctx, args...) _ = c(ctx, cmd) return cmd } diff --git a/do_test.go b/do_test.go index 5a230c7b6..e8e4fccfa 100644 --- a/do_test.go +++ b/do_test.go @@ -12,7 +12,6 @@ var _ = Describe("Do cmdble", func() { BeforeEach(func() { client = redis.NewClient(redisOptions()) - Expect(client.FlushDB(ctx).Err()).NotTo(HaveOccurred()) }) AfterEach(func() { @@ -22,6 +21,6 @@ var _ = Describe("Do cmdble", func() { It("should pong with Do cmd", func() { result := client.Conn().Do(ctx, "PING") Expect(result.Result()).To(Equal("PONG")) - Expect(result.Err()).NotTo(HaveOccurred()) + Expect(result.Err()).ShouldNot(HaveOccurred()) }) }) From 6e5adac32a72c62eff97842db246f590690b8abe Mon Sep 17 00:00:00 2001 From: Oleg Laktyushkin Date: Tue, 4 Mar 2025 14:43:46 +0300 Subject: [PATCH 4/4] moved Do cmd to commands.go --- commands.go | 6 ++++++ commands_test.go | 7 ++++++- do.go | 9 --------- do_test.go | 26 -------------------------- 4 files changed, 12 insertions(+), 36 deletions(-) delete mode 100644 do.go delete mode 100644 do_test.go diff --git a/commands.go b/commands.go index 034daa235..8746aabdb 100644 --- a/commands.go +++ b/commands.go @@ -423,6 +423,12 @@ func (c cmdable) Ping(ctx context.Context) *StatusCmd { return cmd } +func (c cmdable) Do(ctx context.Context, args ...interface{}) *Cmd { + cmd := NewCmd(ctx, args...) + _ = c(ctx, cmd) + return cmd +} + func (c cmdable) Quit(_ context.Context) *StatusCmd { panic("not implemented") } diff --git a/commands_test.go b/commands_test.go index 681fe470d..918eb907e 100644 --- a/commands_test.go +++ b/commands_test.go @@ -84,6 +84,12 @@ var _ = Describe("Commands", func() { Expect(ping.Val()).To(Equal("PONG")) }) + It("should Ping with Do method", func() { + result := client.Conn().Do(ctx, "PING") + Expect(result.Err()).NotTo(HaveOccurred()) + Expect(result.Val()).To(Equal("PONG")) + }) + It("should Wait", func() { const wait = 3 * time.Second @@ -2659,7 +2665,6 @@ var _ = Describe("Commands", func() { Expect(res).To(Equal([]int64{1, 1, -2})) }) - It("should HPExpire", Label("hash-expiration", "NonRedisEnterprise"), func() { SkipBeforeRedisVersion(7.4, "doesn't work with older redis stack images") res, err := client.HPExpire(ctx, "no_such_key", 10*time.Second, "field1", "field2", "field3").Result() diff --git a/do.go b/do.go deleted file mode 100644 index ecd595778..000000000 --- a/do.go +++ /dev/null @@ -1,9 +0,0 @@ -package redis - -import "context" - -func (c cmdable) Do(ctx context.Context, args ...interface{}) *Cmd { - cmd := NewCmd(ctx, args...) - _ = c(ctx, cmd) - return cmd -} diff --git a/do_test.go b/do_test.go deleted file mode 100644 index e8e4fccfa..000000000 --- a/do_test.go +++ /dev/null @@ -1,26 +0,0 @@ -package redis_test - -import ( - . "github.com/bsm/ginkgo/v2" - . "github.com/bsm/gomega" - - "github.com/redis/go-redis/v9" -) - -var _ = Describe("Do cmdble", func() { - var client *redis.Client - - BeforeEach(func() { - client = redis.NewClient(redisOptions()) - }) - - AfterEach(func() { - client.Close() - }) - - It("should pong with Do cmd", func() { - result := client.Conn().Do(ctx, "PING") - Expect(result.Result()).To(Equal("PONG")) - Expect(result.Err()).ShouldNot(HaveOccurred()) - }) -})