Skip to content

Commit bfed246

Browse files
committed
chore: add redis infra
1 parent f8082ef commit bfed246

12 files changed

+181
-6
lines changed

examples/redis/kod.toml

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
["github.com/go-kod/kod/examples/redis/Component"]
2+
redisConfig = { addr = "localhost:6379" }

examples/redis/kod_gen.go

+53
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/redis/kod_gen_interface.go

+12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/redis/kod_gen_mock.go

+54
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/redis/redis.go

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package redis
2+
3+
import (
4+
"context"
5+
6+
"github.com/go-kod/kod"
7+
"github.com/go-kod/kod/ext/client/kredis"
8+
"github.com/redis/go-redis/v9"
9+
)
10+
11+
type impl struct {
12+
kod.Implements[Component]
13+
kod.WithConfig[config]
14+
15+
cc *redis.Client
16+
}
17+
18+
type config struct {
19+
RedisConfig kredis.Config
20+
}
21+
22+
func (ins *impl) Init(ctx context.Context) error {
23+
ins.cc = ins.Config().RedisConfig.Build()
24+
return nil
25+
}
26+
27+
func (ins *impl) Client() *redis.Client {
28+
return ins.cc
29+
}

examples/snowflake/kod.toml

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
["github.com/go-kod/kod/examples/redis/Component"]
2+
redisConfig = { addr = "localhost:6379" }

examples/snowflake/kod_gen.go

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/snowflake/snowflake.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,23 @@ import (
55
"time"
66

77
"github.com/go-kod/kod"
8+
"github.com/go-kod/kod/examples/redis"
89
"github.com/sony/sonyflake"
910
)
1011

1112
type impl struct {
1213
kod.Implements[Component]
14+
redis kod.Ref[redis.Component]
15+
1316
snowflake *sonyflake.Sonyflake
1417
}
1518

1619
func (ins *impl) Init(ctx context.Context) error {
1720
ins.snowflake = sonyflake.NewSonyflake(sonyflake.Settings{
1821
StartTime: time.Now(),
1922
MachineID: func() (uint16, error) {
20-
// TODO use redis to get machine id
21-
return 1, nil
23+
machineId, err := ins.redis.Get().Client().Incr(ctx, "snowflake:id").Uint64()
24+
return uint16(machineId), err
2225
},
2326
})
2427

examples/snowflake/snowflake_test.go

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package snowflake
2+
3+
import (
4+
"context"
5+
"testing"
6+
7+
"github.com/go-kod/kod"
8+
"github.com/stretchr/testify/assert"
9+
)
10+
11+
func TestSnowflake(t *testing.T) {
12+
kod.RunTest(t, func(ctx context.Context, c Component) {
13+
nextIDRes, err := c.NextID(ctx, &NextIDRequest{})
14+
assert.Nil(t, err)
15+
assert.NotZero(t, nextIDRes.ID)
16+
})
17+
}

examples/user/kod.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
["github.com/go-kod/kod/examples/user/Component"]
1+
["github.com/go-kod/kod/examples/redis/Component"]
22
redisConfig = { addr = "localhost:6379" }

examples/user/kod_gen.go

+2-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/user/user.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"time"
88

99
"github.com/go-kod/kod"
10+
redisC "github.com/go-kod/kod/examples/redis"
1011
"github.com/go-kod/kod/examples/snowflake"
1112
"github.com/go-kod/kod/ext/client/kredis"
1213
"github.com/go-kod/kod/interceptor/kmetric"
@@ -21,6 +22,7 @@ type impl struct {
2122
kod.Implements[Component]
2223
kod.WithConfig[config]
2324
snowflake kod.Ref[snowflake.Component]
25+
redisComp kod.Ref[redisC.Component]
2426

2527
redis *redis.Client
2628
}
@@ -37,7 +39,7 @@ type claims struct {
3739
}
3840

3941
func (ins *impl) Init(ctx context.Context) error {
40-
ins.redis = ins.Config().Redis.Build()
42+
ins.redis = ins.redisComp.Get().Client()
4143

4244
if ins.Config().SecretKey == "" {
4345
ins.Config().SecretKey = "my-secret"

0 commit comments

Comments
 (0)