12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package dao
- import (
- "context"
- "fmt"
- "time"
- "go-common/app/job/main/coin/conf"
- "go-common/library/cache/redis"
- "go-common/library/database/sql"
- "go-common/library/stat/prom"
- )
- // Dao define dao.
- type Dao struct {
- c *conf.Config
- coinDB *sql.DB
- hitSettlePeriodStmt *sql.Stmt
- getSettlePeriodStmt *sql.Stmt
- getTotalCoinsStmt []*sql.Stmt
- redis *redis.Pool
- loginExpire int32
- }
- // PromError .
- func PromError(name string) {
- prom.BusinessErrCount.Incr(name)
- }
- // New new and return service.
- func New(c *conf.Config) (d *Dao) {
- d = &Dao{
- c: c,
- coinDB: sql.NewMySQL(c.DB.Coin),
- getTotalCoinsStmt: make([]*sql.Stmt, SHARDING),
- redis: redis.NewPool(c.Redis),
- loginExpire: int32(time.Duration(c.CoinJob.LoginExpire) / time.Second),
- }
- for i := 0; i < SHARDING; i++ {
- d.getTotalCoinsStmt[i] = d.coinDB.Prepared(fmt.Sprintf(_getTotalCoins, i))
- }
- d.hitSettlePeriodStmt = d.coinDB.Prepared(_hitSettlePeriod)
- d.getSettlePeriodStmt = d.coinDB.Prepared(_getSettlePeriod)
- return
- }
- // Ping check service health.
- func (d *Dao) Ping(c context.Context) error {
- return d.coinDB.Ping(c)
- }
- // Close close sevice.
- func (d *Dao) Close() {
- d.coinDB.Close()
- }
|