/
data.go
73 lines (62 loc) · 1.57 KB
/
data.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package data
import (
"context"
"database/sql"
"github.com/go-kratos/kratos/v2/log"
"github.com/google/wire"
"github.com/peter-wow/seckill/app/goods/service/internal/conf"
"github.com/peter-wow/seckill/app/goods/service/internal/data/ent"
"github.com/yedf/dtmcli"
_ "github.com/go-sql-driver/mysql"
)
// ProviderSet is data providers.
var ProviderSet = wire.NewSet(NewData, NewGoodsRepo, NewOrdersRepo)
// Data .
type Data struct {
// TODO warpped database client
db *ent.Client
sql *sql.DB
}
// NewData .
func NewData(conf *conf.Data, logger log.Logger) (*Data, func(), error) {
log := log.NewHelper(log.With(logger, "module", "server-service/data"))
client, err := ent.Open(
conf.Database.Driver,
conf.Database.Source,
)
if err != nil {
log.Errorf("failed opening connection to sqlite: %v", err)
return nil, nil, err
}
// Run the auto migration tool.
if err := client.Schema.Create(context.Background()); err != nil {
log.Errorf("failed creating schema resources: %v", err)
return nil, nil, err
}
//sql-dtm
// 结构体转为 map[string][string]
var dbSqlDtmConf = map[string]string{
"driver": conf.Database.Driver,
"host": "192.168.0.111",
"user": "root",
"password": "Root@123456",
"port": "3307",
}
dbSqlDtm, err := dtmcli.SdbGet(dbSqlDtmConf)
dtmcli.FatalIfError(err)
d := &Data{
db: client,
sql: dbSqlDtm,
}
return d, func() {
if err := d.db.Close(); err != nil {
log.Error(err)
}
}, nil
}
// 开启mysql事务
func BeginTx(db *sql.DB) *sql.Tx {
tx, err := db.Begin()
dtmcli.FatalIfError(err)
return tx
}