Skip to content

Commit fc49dfb

Browse files
committed
feat: add gorm db
1 parent ea8a8ac commit fc49dfb

File tree

7 files changed

+84
-53
lines changed

7 files changed

+84
-53
lines changed

cmd/realworld-go-kratos/wire_gen.go

Lines changed: 3 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

configs/config.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ server:
88
data:
99
database:
1010
driver: mysql
11-
source: root:root@tcp(127.0.0.1:3306)/realword_go_kratos?parseTime=True
11+
source: root:root@tcp(127.0.0.1:3306)/realworld_go_kratos?charset=utf8mb4&parseTime=True&loc=Local
1212
redis:
1313
addr: 127.0.0.1:6379
1414
dial_timeout: 1s

go.mod

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ require (
1010
google.golang.org/genproto v0.0.0-20220524023933-508584e28198
1111
google.golang.org/grpc v1.46.2
1212
google.golang.org/protobuf v1.28.0
13+
gorm.io/driver/mysql v1.3.4
14+
gorm.io/gorm v1.23.6
1315
)
1416

1517
require (
@@ -21,10 +23,13 @@ require (
2123
github.com/go-logr/stdr v1.2.2 // indirect
2224
github.com/go-playground/form/v4 v4.2.0 // indirect
2325
github.com/go-redis/redis/extra/rediscmd v0.2.0 // indirect
26+
github.com/go-sql-driver/mysql v1.6.0 // indirect
2427
github.com/golang/protobuf v1.5.2 // indirect
2528
github.com/google/uuid v1.3.0 // indirect
2629
github.com/gorilla/mux v1.8.0 // indirect
2730
github.com/imdario/mergo v0.3.12 // indirect
31+
github.com/jinzhu/inflection v1.0.0 // indirect
32+
github.com/jinzhu/now v1.1.5 // indirect
2833
go.opentelemetry.io/otel v1.7.0 // indirect
2934
go.opentelemetry.io/otel/trace v1.7.0 // indirect
3035
golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 // indirect

go.sum

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@ github.com/go-redis/redis/v8 v8.3.2/go.mod h1:jszGxBCez8QA1HWSmQxJO9Y82kNibbUmeY
5454
github.com/go-redis/redis/v8 v8.5.0/go.mod h1:YmEcgBDttjnkbMzDAhDtQxY9yVA7jMN6PCR5HeMvqFE=
5555
github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI=
5656
github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo=
57+
github.com/go-sql-driver/mysql v1.6.0 h1:BCTh4TKNUYmOmMUcQ3IipzF5prigylS7XXjEkfCHuOE=
58+
github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
5759
github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE=
5860
github.com/golang-jwt/jwt/v4 v4.4.1/go.mod h1:m21LjoU+eqJr34lmDMbreY2eSTRJ1cv77w39/MY0Ch0=
5961
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
@@ -97,6 +99,11 @@ github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpO
9799
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
98100
github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU=
99101
github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA=
102+
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
103+
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
104+
github.com/jinzhu/now v1.1.4/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
105+
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=
106+
github.com/jinzhu/now v1.1.5/go.mod h1:d3SSVoowX0Lcu0IBviAWJpolVfI5UJVZZ7cO71lE/z8=
100107
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
101108
github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
102109
github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
@@ -264,5 +271,10 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
264271
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
265272
gopkg.in/yaml.v3 v3.0.0 h1:hjy8E9ON/egN1tAYqKb61G10WtihqetD4sz2H+8nIeA=
266273
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
274+
gorm.io/driver/mysql v1.3.4 h1:/KoBMgsUHC3bExsekDcmNYaBnfH2WNeFuXqqrqMc98Q=
275+
gorm.io/driver/mysql v1.3.4/go.mod h1:s4Tq0KmD0yhPGHbZEwg1VPlH0vT/GBHJZorPzhcxBUE=
276+
gorm.io/gorm v1.23.4/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
277+
gorm.io/gorm v1.23.6 h1:KFLdNgri4ExFFGTRGGFWON2P1ZN28+9SJRN8voOoYe0=
278+
gorm.io/gorm v1.23.6/go.mod h1:l2lP/RyAtc1ynaTjFksBde/O8v9oOGIApu2/xRitmZk=
267279
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
268280
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=

internal/conf/conf.pb.go

Lines changed: 27 additions & 37 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

internal/conf/conf.proto

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,7 @@ message Server {
2727

2828
message Data {
2929
message Database {
30-
string driver = 1;
31-
string source = 2;
30+
string dsn = 1;
3231
}
3332
message Redis {
3433
string network = 1;

internal/data/data.go

Lines changed: 35 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,21 +5,51 @@ import (
55
"github.com/go-redis/redis/extra/redisotel"
66
"github.com/go-redis/redis/v8"
77
"github.com/google/wire"
8+
"gorm.io/driver/mysql"
9+
"gorm.io/gorm"
810
"realworld-go-kratos/internal/conf"
911
)
1012

1113
// ProviderSet is data providers.
12-
var ProviderSet = wire.NewSet(NewData, NewRealWorldRepository)
14+
var ProviderSet = wire.NewSet(NewData, NewDB, NewRedis, NewRealWorldRepository)
1315

1416
// Data .
1517
type Data struct {
16-
rdb *redis.Client
18+
db *gorm.DB
19+
redis *redis.Client
1720
}
1821

1922
// NewData .
20-
func NewData(conf *conf.Data, logger log.Logger) (*Data, func(), error) {
23+
func NewData(conf *conf.Data, db *gorm.DB, redis *redis.Client, logger log.Logger) (*Data, func(), error) {
2124
hlog := log.NewHelper(logger)
2225

26+
d := &Data{
27+
db: db,
28+
redis: redis,
29+
}
30+
return d, func() {
31+
hlog.Info("message", "closing the data resources")
32+
if err := d.redis.Close(); err != nil {
33+
hlog.Error(err)
34+
}
35+
}, nil
36+
}
37+
38+
func NewDB(conf *conf.Data) *gorm.DB {
39+
db, err := gorm.Open(mysql.Open(conf.Database.Dsn), &gorm.Config{})
40+
if err != nil {
41+
panic("failed to connect database")
42+
}
43+
44+
// 迁移 schema
45+
if err = db.AutoMigrate(); err != nil {
46+
return nil
47+
}
48+
49+
return db
50+
}
51+
52+
func NewRedis(conf *conf.Data) *redis.Client {
2353
rdb := redis.NewClient(&redis.Options{
2454
Addr: conf.Redis.Addr,
2555
Password: conf.Redis.Password,
@@ -29,13 +59,6 @@ func NewData(conf *conf.Data, logger log.Logger) (*Data, func(), error) {
2959
ReadTimeout: conf.Redis.ReadTimeout.AsDuration(),
3060
})
3161
rdb.AddHook(redisotel.TracingHook{})
32-
d := &Data{
33-
rdb: rdb,
34-
}
35-
return d, func() {
36-
hlog.Info("message", "closing the data resources")
37-
if err := d.rdb.Close(); err != nil {
38-
hlog.Error(err)
39-
}
40-
}, nil
62+
63+
return rdb
4164
}

0 commit comments

Comments
 (0)