data.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  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(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.Data, logger log.Logger) (*Data, error) {
  19. data := &Data{
  20. log: log.NewHelper("data/data", logger),
  21. }
  22. var err error
  23. if c.Database != nil {
  24. data.Mysql, err = models.NewMysql(c.Database.Source, logger)
  25. if err != nil {
  26. return nil, err
  27. }
  28. data.Mysql.XDB.SetMaxIdleConns(int(c.Database.MaxIdleConns))
  29. data.Mysql.XDB.SetMaxOpenConns(int(c.Database.MaxOpenConns))
  30. }
  31. if c.Redis != nil {
  32. data.rdb = redis.NewClient(&redis.Options{
  33. Addr: c.Redis.Addr,
  34. DB: int(c.Redis.Db),
  35. DialTimeout: c.Redis.DialTimeout.AsDuration(),
  36. WriteTimeout: c.Redis.WriteTimeout.AsDuration(),
  37. ReadTimeout: c.Redis.ReadTimeout.AsDuration(),
  38. PoolSize: int(c.Redis.PoolSize),
  39. MinIdleConns: int(c.Redis.MinIdleConns),
  40. })
  41. }
  42. return data, nil
  43. }