You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.4 KiB
100 lines
2.4 KiB
package dao |
|
|
|
import ( |
|
"context" |
|
xhttp "net/http" |
|
"time" |
|
|
|
"go-common/app/admin/main/member/conf" |
|
"go-common/app/admin/main/member/dao/block" |
|
"go-common/library/cache/memcache" |
|
"go-common/library/cache/redis" |
|
"go-common/library/database/elastic" |
|
"go-common/library/database/orm" |
|
"go-common/library/database/sql" |
|
bm "go-common/library/net/http/blademaster" |
|
"go-common/library/queue/databus" |
|
|
|
"go-common/library/database/hbase.v2" |
|
|
|
"github.com/jinzhu/gorm" |
|
) |
|
|
|
// Dao dao |
|
type Dao struct { |
|
c *conf.Config |
|
// db |
|
member *gorm.DB |
|
memberRead *gorm.DB |
|
account *gorm.DB |
|
block *block.Dao |
|
fhbyophbase *hbase.Client |
|
fhbymidhbase *hbase.Client |
|
httpClient *bm.Client |
|
passportClient *bm.Client |
|
bfsclient *xhttp.Client |
|
upUnameURL string |
|
queryByMidsURL string |
|
msgURL string |
|
expMsgDatabus *databus.Databus |
|
es *elastic.Elastic |
|
redis *redis.Pool |
|
memcache *memcache.Pool |
|
merakURL string |
|
} |
|
|
|
// New init mysql db |
|
func New(c *conf.Config) (dao *Dao) { |
|
dao = &Dao{ |
|
c: c, |
|
member: orm.NewMySQL(c.ORM.Member), |
|
memberRead: orm.NewMySQL(c.ORM.MemberRead), |
|
account: orm.NewMySQL(c.ORM.Account), // account-php 库 |
|
fhbyophbase: hbase.NewClient(c.FHByOPHBase), |
|
fhbymidhbase: hbase.NewClient(c.FHByMidHBase), |
|
httpClient: bm.NewClient(c.HTTPClient.Read), |
|
passportClient: bm.NewClient(c.HTTPClient.Passport), |
|
bfsclient: &xhttp.Client{Timeout: time.Duration(c.FacePriBFS.Timeout)}, |
|
msgURL: c.Host.Message + _msgURL, |
|
upUnameURL: c.Host.Passport + _updateUname, |
|
queryByMidsURL: c.Host.Passport + _queryByMids, |
|
merakURL: c.Host.Merak + "/", |
|
expMsgDatabus: databus.New(c.ExpMsgDatabus), |
|
es: elastic.NewElastic(c.ES), |
|
redis: redis.NewPool(c.Redis), |
|
memcache: memcache.NewPool(c.Memcache), |
|
} |
|
dao.block = block.New(c, dao.httpClient, memcache.NewPool(c.BlockMemcache), sql.NewMySQL(c.BlockMySQL)) |
|
dao.initORM() |
|
return |
|
} |
|
|
|
// Close close the resource. |
|
func (d *Dao) Close() { |
|
if d.member != nil { |
|
d.member.Close() |
|
} |
|
if d.redis != nil { |
|
d.redis.Close() |
|
} |
|
} |
|
|
|
func (d *Dao) initORM() { |
|
d.member.LogMode(true) |
|
} |
|
|
|
// Ping dao ping |
|
func (d *Dao) Ping(ctx context.Context) (err error) { |
|
if err = d.member.DB().PingContext(ctx); err != nil { |
|
return |
|
} |
|
if err = d.pingRedis(ctx); err != nil { |
|
return |
|
} |
|
return |
|
} |
|
|
|
// BlockImpl is |
|
func (d *Dao) BlockImpl() *block.Dao { |
|
return d.block |
|
}
|
|
|