dao.go 830 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package v2
  2. import (
  3. "context"
  4. "time"
  5. "go-common/app/infra/config/conf"
  6. "go-common/library/cache/redis"
  7. "go-common/library/database/orm"
  8. "github.com/jinzhu/gorm"
  9. )
  10. // Dao dao.
  11. type Dao struct {
  12. // redis
  13. redis *redis.Pool
  14. expire time.Duration
  15. // cache
  16. pathCache string
  17. //DB
  18. DB *gorm.DB
  19. }
  20. // New new a dao.
  21. func New(c *conf.Config) *Dao {
  22. d := &Dao{
  23. // redis
  24. redis: redis.NewPool(c.Redis),
  25. expire: time.Duration(c.PollTimeout),
  26. // cache
  27. pathCache: c.PathCache,
  28. // orm
  29. DB: orm.NewMySQL(c.ORM),
  30. }
  31. return d
  32. }
  33. // Ping ping is ok.
  34. func (d *Dao) Ping(c context.Context) (err error) {
  35. if err = d.pingRedis(c); err != nil {
  36. return
  37. }
  38. return d.DB.DB().PingContext(c)
  39. }
  40. // Close close resuouces.
  41. func (d *Dao) Close() {
  42. if d.DB != nil {
  43. d.DB.Close()
  44. }
  45. if d.redis != nil {
  46. d.redis.Close()
  47. }
  48. }