Create & Init Project...
This commit is contained in:
98
app/service/live/resource/dao/dao.go
Normal file
98
app/service/live/resource/dao/dao.go
Normal file
@ -0,0 +1,98 @@
|
||||
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)
|
||||
}
|
Reference in New Issue
Block a user