123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package dao
- import (
- "bytes"
- "context"
- "encoding/json"
- "net/http"
- "time"
- "go-common/app/tool/saga/conf"
- "go-common/library/cache/memcache"
- "go-common/library/cache/redis"
- "go-common/library/database/hbase.v2"
- "go-common/library/database/orm"
- bm "go-common/library/net/http/blademaster"
- "github.com/jinzhu/gorm"
- "github.com/pkg/errors"
- )
- // Dao def
- type Dao struct {
- // cache
- httpClient *bm.Client
- mysql *gorm.DB
- mcMR *memcache.Pool
- redis *redis.Pool
- hbase *hbase.Client
- mcMRRecordExpire int32
- }
- // New create instance of Dao
- func New() (d *Dao) {
- d = &Dao{
- httpClient: bm.NewClient(conf.Conf.HTTPClient),
- mysql: orm.NewMySQL(conf.Conf.ORM),
- mcMR: memcache.NewPool(conf.Conf.Memcache.MR),
- redis: redis.NewPool(conf.Conf.Redis),
- hbase: hbase.NewClient(conf.Conf.HBase.Config),
- mcMRRecordExpire: int32(time.Duration(conf.Conf.Memcache.MRRecordExpire) / time.Second),
- }
- return
- }
- // Ping dao.
- func (d *Dao) Ping(c context.Context) (err error) {
- if err = d.pingRedis(c); err != nil {
- return
- }
- if err = d.pingMC(c); err != nil {
- return
- }
- return d.mysql.DB().Ping()
- }
- // Close dao.
- func (d *Dao) Close() {
- if d.mcMR != nil {
- d.mcMR.Close()
- }
- if d.redis != nil {
- d.redis.Close()
- }
- if d.mysql != nil {
- d.mysql.Close()
- }
- if d.hbase != nil {
- d.hbase.Close()
- }
- }
- func (d *Dao) newRequest(method, url string, v interface{}) (req *http.Request, err error) {
- body := &bytes.Buffer{}
- if method != http.MethodGet {
- if err = json.NewEncoder(body).Encode(v); err != nil {
- err = errors.WithStack(err)
- return
- }
- }
- if req, err = http.NewRequest(method, url, body); err != nil {
- err = errors.WithStack(err)
- }
- return
- }
|