dao.go 918 B

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