data.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package data
  2. import (
  3. "github.com/go-kratos/kratos-layout/internal/conf"
  4. "github.com/go-kratos/kratos-layout/internal/data/models"
  5. "github.com/go-kratos/kratos/v2/log"
  6. "github.com/go-redis/redis/v8"
  7. "github.com/google/wire"
  8. )
  9. // ProviderSet is data providers.
  10. var ProviderSet = wire.NewSet(NewRedis, NewData)
  11. // Data .
  12. type Data struct {
  13. log *log.Helper
  14. rdb *redis.Client
  15. *models.Mysql
  16. }
  17. // NewData .
  18. func NewData(c *conf.Bootstrap, rdb *redis.Client, logger log.Logger) (*Data, error) {
  19. data := &Data{
  20. log: log.NewHelper(log.With(logger, "module", "data/data")),
  21. }
  22. var err error
  23. if c.Data.Database != nil {
  24. data.Mysql, err = models.NewMysql(c.Data.Database.Source, logger)
  25. if err != nil {
  26. return nil, err
  27. }
  28. data.Mysql.XDB.SetMaxIdleConns(int(c.Data.Database.MaxIdleConns))
  29. data.Mysql.XDB.SetMaxOpenConns(int(c.Data.Database.MaxOpenConns))
  30. }
  31. data.rdb = rdb
  32. return data, nil
  33. }
  34. func NewRedis(c *conf.Bootstrap) *redis.Client {
  35. if c.Data.Redis == nil {
  36. return nil
  37. }
  38. rdb := redis.NewClient(&redis.Options{
  39. Addr: c.Data.Redis.Addr,
  40. DB: int(c.Data.Redis.Db),
  41. DialTimeout: c.Data.Redis.DialTimeout.AsDuration(),
  42. WriteTimeout: c.Data.Redis.WriteTimeout.AsDuration(),
  43. ReadTimeout: c.Data.Redis.ReadTimeout.AsDuration(),
  44. PoolSize: int(c.Data.Redis.PoolSize),
  45. MinIdleConns: int(c.Data.Redis.MinIdleConns),
  46. })
  47. return rdb
  48. }