dao.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package dao
  2. import (
  3. "context"
  4. "net/http"
  5. "time"
  6. "go-common/app/interface/main/esports/conf"
  7. "go-common/library/cache/redis"
  8. "go-common/library/database/elastic"
  9. "go-common/library/database/sql"
  10. bm "go-common/library/net/http/blademaster"
  11. "go-common/library/sync/pipeline/fanout"
  12. )
  13. const (
  14. _searchURL = "/esports/search"
  15. )
  16. // Dao dao struct.
  17. type Dao struct {
  18. // config
  19. c *conf.Config
  20. // db
  21. db *sql.DB
  22. // redis
  23. redis *redis.Pool
  24. filterExpire, listExpire int32
  25. // http client
  26. http *bm.Client
  27. ldClient *http.Client
  28. searchURL string
  29. ela *elastic.Elastic
  30. cache *fanout.Fanout
  31. }
  32. // New new dao.
  33. func New(c *conf.Config) (d *Dao) {
  34. d = &Dao{
  35. // config
  36. c: c,
  37. db: sql.NewMySQL(c.Mysql),
  38. redis: redis.NewPool(c.Redis.Config),
  39. filterExpire: int32(time.Duration(c.Redis.FilterExpire) / time.Second),
  40. listExpire: int32(time.Duration(c.Redis.ListExpire) / time.Second),
  41. http: bm.NewClient(c.HTTPClient),
  42. ldClient: http.DefaultClient,
  43. searchURL: c.Host.Search + _searchURL,
  44. ela: elastic.NewElastic(nil),
  45. cache: fanout.New("fanout"),
  46. }
  47. return
  48. }
  49. // Ping ping dao
  50. func (d *Dao) Ping(c context.Context) (err error) {
  51. if err = d.db.Ping(c); err != nil {
  52. return
  53. }
  54. return
  55. }