| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- 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(NewRedis, NewData)
- // Data .
- type Data struct {
- log *log.Helper
- rdb *redis.Client
- *models.Mysql
- }
- // NewData .
- func NewData(c *conf.Bootstrap, rdb *redis.Client, logger log.Logger) (*Data, error) {
- data := &Data{
- log: log.NewHelper("data/data", logger),
- }
- var err error
- if c.Data.Database != nil {
- data.Mysql, err = models.NewMysql(c.Data.Database.Source, logger)
- if err != nil {
- return nil, err
- }
- data.Mysql.XDB.SetMaxIdleConns(int(c.Data.Database.MaxIdleConns))
- data.Mysql.XDB.SetMaxOpenConns(int(c.Data.Database.MaxOpenConns))
- }
- data.rdb = rdb
- return data, nil
- }
- func NewRedis(c *conf.Bootstrap) *redis.Client {
- if c.Data.Redis == nil {
- return nil
- }
- rdb := redis.NewClient(&redis.Options{
- Addr: c.Data.Redis.Addr,
- DB: int(c.Data.Redis.Db),
- DialTimeout: c.Data.Redis.DialTimeout.AsDuration(),
- WriteTimeout: c.Data.Redis.WriteTimeout.AsDuration(),
- ReadTimeout: c.Data.Redis.ReadTimeout.AsDuration(),
- PoolSize: int(c.Data.Redis.PoolSize),
- MinIdleConns: int(c.Data.Redis.MinIdleConns),
- })
- return rdb
- }
|