123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package dao
- import (
- "context"
- "time"
- "go-common/app/job/openplatform/article/conf"
- "go-common/library/cache"
- "go-common/library/cache/redis"
- xsql "go-common/library/database/sql"
- bm "go-common/library/net/http/blademaster"
- "go-common/library/queue/databus"
- "go-common/library/stat/prom"
- )
- // Dao .
- type Dao struct {
- c *conf.Config
- db *xsql.DB
- redis *redis.Pool
- artRedis *redis.Pool
- httpClient *bm.Client
- gameHTTPClient *bm.Client
- viewCacheTTL, gameCacheExpire int64
- dupViewCacheTTL int64
- redisSortExpire int64
- redisSortTTL int64
- // stmt
- updateSearchStmt *xsql.Stmt
- delSearchStmt *xsql.Stmt
- updateSearchStatsStmt *xsql.Stmt
- gameStmt *xsql.Stmt
- cheatStmt *xsql.Stmt
- newestArtsMetaStmt *xsql.Stmt
- searchArtsStmt *xsql.Stmt
- updateRecheckStmt *xsql.Stmt
- getRecheckStmt *xsql.Stmt
- settingsStmt *xsql.Stmt
- midByPubtimeStmt *xsql.Stmt
- statByMidStmt *xsql.Stmt
- dynamicDbus *databus.Databus
- cache *cache.Cache
- }
- var (
- errorsCount = prom.BusinessErrCount
- cacheLen = prom.BusinessInfoCount
- infosCount = prom.BusinessInfoCount
- )
- // New creates a dao instance.
- func New(c *conf.Config) (d *Dao) {
- d = &Dao{
- c: c,
- db: xsql.NewMySQL(c.DB),
- redis: redis.NewPool(c.Redis),
- artRedis: redis.NewPool(c.ArtRedis),
- httpClient: bm.NewClient(c.HTTPClient),
- gameHTTPClient: bm.NewClient(c.GameHTTPClient),
- viewCacheTTL: int64(time.Duration(c.Job.ViewCacheTTL) / time.Second),
- dupViewCacheTTL: int64(time.Duration(c.Job.DupViewCacheTTL) / time.Second),
- gameCacheExpire: int64(time.Duration(c.Job.GameCacheExpire) / time.Second),
- redisSortExpire: int64(time.Duration(c.Job.ExpireSortArts) / time.Second),
- redisSortTTL: int64(time.Duration(c.Job.TTLSortArts) / time.Second),
- dynamicDbus: databus.New(c.DynamicDbus),
- cache: cache.New(1, 1024),
- }
- d.updateSearchStmt = d.db.Prepared(_updateSearch)
- d.delSearchStmt = d.db.Prepared(_delSearch)
- d.updateSearchStatsStmt = d.db.Prepared(_updateSearchStats)
- d.newestArtsMetaStmt = d.db.Prepared(_newestArtsMetaSQL)
- d.gameStmt = d.db.Prepared(_gameList)
- d.cheatStmt = d.db.Prepared(_allCheat)
- d.searchArtsStmt = d.db.Prepared(_searchArticles)
- d.updateRecheckStmt = d.db.Prepared(_updateCheckState)
- d.getRecheckStmt = d.db.Prepared(_checkStateSQL)
- d.settingsStmt = d.db.Prepared(_settingsSQL)
- d.midByPubtimeStmt = d.db.Prepared(_midsByPublishTimeSQL)
- d.statByMidStmt = d.db.Prepared(_statByMidSQL)
- return
- }
- //go:generate $GOPATH/src/go-common/app/tool/cache/gen
- type _cache interface {
- GameList(c context.Context) (res []int64, err error)
- }
- // PromError prometheus error count.
- func PromError(name string) {
- errorsCount.Incr(name)
- }
- // PromInfo prometheus info count.
- func PromInfo(name string) {
- infosCount.Incr(name)
- }
- // Ping reports the health of the db/cache etc.
- func (d *Dao) Ping(c context.Context) (err error) {
- if err = d.db.Ping(c); err != nil {
- PromError("db:Ping")
- return
- }
- err = d.pingRedis(c)
- return
- }
|