package data import ( "github.com/go-kratos/kratos-layout/internal/conf" "github.com/go-kratos/kratos-layout/internal/data/models" "github.com/go-kratos/kratos/v2/log" "github.com/go-redis/redis/v8" "github.com/google/wire" ) // ProviderSet is data providers. var ProviderSet = wire.NewSet(NewData) // Data . type Data struct { log *log.Helper rdb *redis.Client *models.Mysql } // NewData . func NewData(c *conf.Data, logger log.Logger) (*Data, error) { data := &Data{ log: log.NewHelper("data/data", logger), } var err error if c.Database != nil { data.Mysql, err = models.NewMysql(c.Database.Source, logger) if err != nil { return nil, err } data.Mysql.XDB.SetMaxIdleConns(int(c.Database.MaxIdleConns)) data.Mysql.XDB.SetMaxOpenConns(int(c.Database.MaxOpenConns)) } if c.Redis != nil { data.rdb = redis.NewClient(&redis.Options{ Addr: c.Redis.Addr, DB: int(c.Redis.Db), DialTimeout: c.Redis.DialTimeout.AsDuration(), WriteTimeout: c.Redis.WriteTimeout.AsDuration(), ReadTimeout: c.Redis.ReadTimeout.AsDuration(), PoolSize: int(c.Redis.PoolSize), MinIdleConns: int(c.Redis.MinIdleConns), }) } return data, nil }