package data import ( "github.com/go-kratos/kratos/v2/log" "github.com/google/wire" "gokratos-base/app/service/demo/internal/conf" "gokratos-base/common/mysql" "gokratos-base/common/redis" "gorm.io/gorm" ) // ProviderSet is data providers. var ProviderSet = wire.NewSet(NewData, NewDemoRepo) // Data . type Data struct { // TODO wrapped database client DB *gorm.DB Redis *redis.WrapClient } // NewData . func NewData(c *conf.Data) (*Data, func(), error) { db := mysql.NewDB(c.Mysql) rs := redis.NewRedis(c.Redis) cleanup := func() { d, _ := db.DB() d.Close() rs.Client.Close() log.Debug("close data resources") } return &Data{ DB: db, Redis: rs, }, cleanup, nil }