1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- package dao
- import (
- "context"
- "fmt"
- "go-common/library/net/http/blademaster"
- "math/rand"
- "time"
- "go-common/app/service/live/resource/conf"
- "go-common/app/service/live/resource/lrucache"
- "go-common/library/database/orm"
- xsql "go-common/library/database/sql"
- "github.com/jinzhu/gorm"
- )
- const (
- _prefixResource = "live:res:"
- _prefixLiveCheck = "live:check:"
- _prefixConf = "live:conf:"
- )
- func cacheResourceKey(typ string, platform string, build int64) string {
- return fmt.Sprintf("%s:%s:%s:%d", _prefixResource, typ, platform, build)
- }
- func cacheLiveCheckKey(platform, system, mobile string) string {
- return fmt.Sprintf("%s:%s:%s:%s", _prefixLiveCheck, platform, system, mobile)
- }
- func cacheConfKey(key string) string {
- return fmt.Sprintf("%s:%s", _prefixConf, key)
- }
- // Dao dao
- type Dao struct {
- c *conf.Config
- db *xsql.DB
- rsDB *gorm.DB
- rsDBReader *gorm.DB
- sCache []*lrucache.SyncCache
- client *blademaster.Client
- }
- // New init mysql db
- func New(c *conf.Config) (dao *Dao) {
- if c.CacheCapacity <= 0 {
- c.CacheCapacity = 100
- }
- if c.CacheBucket <= 0 {
- c.CacheBucket = 100
- }
- if c.CacheInstCnt <= 0 {
- c.CacheInstCnt = 10
- }
- if c.CacheTimeout <= 0 {
- c.CacheTimeout = 60
- }
- sCache := make([]*lrucache.SyncCache, c.CacheInstCnt)
- for i := range sCache {
- sCache[i] = lrucache.NewSyncCache(c.CacheCapacity, c.CacheBucket, c.CacheTimeout)
- }
- dao = &Dao{
- c: c,
- db: xsql.NewMySQL(c.MySQL),
- rsDB: orm.NewMySQL(c.DB.Resource),
- rsDBReader: orm.NewMySQL(c.DB.ResourceReader),
- sCache: sCache,
- client: blademaster.NewClient(c.HttpClient),
- }
- rand.Seed(time.Now().UnixNano())
- return
- }
- // mysql log
- func (d *Dao) initORM() {
- d.rsDB.LogMode(true)
- d.rsDB.LogMode(true)
- }
- // Close close the resource.
- func (d *Dao) Close() {
- d.db.Close()
- d.rsDB.Close()
- d.rsDBReader.Close()
- return
- }
- // Ping dao ping
- func (d *Dao) Ping(c context.Context) (err error) {
- // TODO: if you need use mc,redis, please add
- if err = d.db.Ping(c); err != nil {
- return
- }
- return
- //return d.pingRedis(c)
- }
|