2019-04-22 02:59:20 +00:00

98 lines
3.1 KiB
Go

package dao
import (
"context"
"fmt"
account "go-common/app/service/main/account/api"
"go-common/app/service/main/ugcpay-rank/internal/conf"
"go-common/app/service/main/ugcpay-rank/internal/model"
"go-common/library/cache/memcache"
xsql "go-common/library/database/sql"
"github.com/bluele/gcache"
)
// Dao dao
type Dao struct {
mc *memcache.Pool
db *xsql.DB
accountAPI account.AccountClient
// local cache
elecAVRankLC gcache.Cache
elecUPRankLC gcache.Cache
}
// New init mysql db
func New() (dao *Dao) {
dao = &Dao{
mc: memcache.NewPool(conf.Conf.Memcache),
db: xsql.NewMySQL(conf.Conf.MySQL),
elecAVRankLC: gcache.New(conf.Conf.LocalCache.ElecAVRankSize).LFU().Build(),
elecUPRankLC: gcache.New(conf.Conf.LocalCache.ElecUPRankSize).LFU().Build(),
}
var err error
if dao.accountAPI, err = account.NewClient(conf.Conf.AccountGRPC); err != nil {
panic(err)
}
return
}
// Close close the resource.
func (d *Dao) Close() {
d.mc.Close()
d.db.Close()
}
// Ping dao ping
func (d *Dao) Ping(ctx context.Context) error {
return nil
}
func elecUPRankKey(upMID int64, ver int64) string {
return fmt.Sprintf("ur_eur_%d_%d", ver, upMID)
}
func elecPrepUPRankKey(upMID int64, ver int64) string {
return fmt.Sprintf("ur_epur_%d_%d", ver, upMID)
}
func elecAVRankKey(avID int64, ver int64) string {
return fmt.Sprintf("ur_ear_%d_%d", ver, avID)
}
func elecPrepAVRankKey(avID int64, ver int64) string {
return fmt.Sprintf("ur_epar_%d_%d", ver, avID)
}
//go:generate $GOPATH/src/go-common/app/tool/cache/mc
type _mc interface {
//mc: -key=elecUPRankKey -type=get
CacheElecUPRank(c context.Context, mid int64) (*model.RankElecUPProto, error)
//mc: -key=elecUPRankKey -expire=conf.Conf.CacheTTL.ElecUPRankTTL -encode=json
AddCacheElecUPRank(c context.Context, mid int64, value *model.RankElecUPProto) error
//mc: -key=elecUPRankKey
DelCacheElecUPRank(c context.Context, mid int64) error
//mc: -key=elecAVRankKey -type=get
CacheElecAVRank(c context.Context, avID int64) (*model.RankElecAVProto, error)
//mc: -key=elecAVRankKey -expire=conf.Conf.CacheTTL.ElecAVRankTTL -encode=json
AddCacheElecAVRank(c context.Context, avID int64, value *model.RankElecAVProto) error
//mc: -key=elecAVRankKey
DelCacheElecAVRank(c context.Context, avID int64) error
//mc: -key=elecPrepUPRankKey -type=get
CacheElecPrepUPRank(c context.Context, mid int64) (*model.RankElecPrepUPProto, error)
//mc: -key=elecPrepUPRankKey -expire=conf.Conf.CacheTTL.ElecPrepUPRankTTL -encode=json
AddCacheElecPrepUPRank(c context.Context, mid int64, value *model.RankElecPrepUPProto) error
//mc: -key=elecPrepUPRankKey
DelCacheElecPrepUPRank(c context.Context, mid int64) error
//mc: -key=elecPrepAVRankKey -type=get
CacheElecPrepAVRank(c context.Context, avID int64) (*model.RankElecPrepAVProto, error)
//mc: -key=elecPrepAVRankKey -expire=conf.Conf.CacheTTL.ElecPrepAVRankTTL -encode=json
AddCacheElecPrepAVRank(c context.Context, avID int64, value *model.RankElecPrepAVProto) error
//mc: -key=elecPrepAVRankKey
DelCacheElecPrepAVRank(c context.Context, avID int64) error
}