| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 | package dataimport (	"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, func(), error) {	cleanup := func() {	}	data := &Data{		log: log.NewHelper(log.With(logger, "module", "data/data")),	}	var err error	if c.Data.Database != nil {		data.Mysql, err = models.NewMysql(c.Data.Database.Source, logger)		if err != nil {			return nil, cleanup, err		}		data.Mysql.XDB.SetMaxIdleConns(int(c.Data.Database.MaxIdleConns))		data.Mysql.XDB.SetMaxOpenConns(int(c.Data.Database.MaxOpenConns))	}	data.rdb = rdb	cleanup = func() {		if data.XDB != nil {			data.XDB.Close()		}		if data.rdb != nil {			data.rdb.Close()		}	}	return data, cleanup, 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}
 |