You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
3.9 KiB
143 lines
3.9 KiB
package archive |
|
|
|
import ( |
|
"context" |
|
"time" |
|
|
|
"fmt" |
|
"go-common/app/interface/main/creative/conf" |
|
arcMdl "go-common/app/interface/main/creative/model/archive" |
|
archive "go-common/app/service/main/archive/api/gorpc" |
|
"go-common/library/cache/memcache" |
|
"go-common/library/cache/redis" |
|
"go-common/library/database/sql" |
|
bm "go-common/library/net/http/blademaster" |
|
"go-common/library/sync/pipeline/fanout" |
|
) |
|
|
|
// Dao is archive dao. |
|
type Dao struct { |
|
// config |
|
c *conf.Config |
|
// rpc |
|
arc *archive.Service2 |
|
// select |
|
client *bm.Client |
|
// db |
|
db *sql.DB |
|
// mc |
|
mc *memcache.Pool |
|
mcExpire int32 |
|
//cache tool |
|
cache *fanout.Fanout |
|
// redis |
|
redis *redis.Pool |
|
redisExpire int32 |
|
// uri |
|
view string |
|
views string |
|
del string |
|
video string |
|
hList string |
|
hView string |
|
flow string |
|
upArchives string |
|
descFormat string |
|
nsMd5 string |
|
simpleVideos string |
|
simpleArchive string |
|
videoJam string |
|
upSpecialURL string |
|
flowJudge string |
|
staffApplies string |
|
staffApply string |
|
staffCheck string |
|
} |
|
|
|
// New init api url |
|
func New(c *conf.Config) (d *Dao) { |
|
d = &Dao{ |
|
c: c, |
|
arc: archive.New2(c.ArchiveRPC), |
|
// http client |
|
client: bm.NewClient(c.HTTPClient.Normal), |
|
// db |
|
db: sql.NewMySQL(c.DB.Archive), |
|
cache: fanout.New("dao_archive", fanout.Worker(5), fanout.Buffer(10240)), |
|
// mc |
|
mc: memcache.NewPool(c.Memcache.Archive.Config), |
|
mcExpire: 600, |
|
//Fav redis cache |
|
redis: redis.NewPool(c.Redis.Cover.Config), |
|
redisExpire: int32(time.Duration(c.Redis.Cover.Expire) / time.Second), |
|
// uri |
|
view: c.Host.Videoup + _view, |
|
views: c.Host.Videoup + _views, |
|
video: c.Host.Videoup + _video, |
|
del: c.Host.Videoup + _del, |
|
hList: c.Host.Videoup + _hList, |
|
hView: c.Host.Videoup + _hView, |
|
flow: c.Host.Videoup + _flow, |
|
upArchives: c.Host.Videoup + _archives, |
|
descFormat: c.Host.Videoup + _descFormat, |
|
nsMd5: c.Host.Videoup + _nsMd5, |
|
simpleVideos: c.Host.Videoup + _simpleVideos, |
|
simpleArchive: c.Host.Videoup + _simpleArchive, |
|
videoJam: c.Host.Videoup + _videoJam, |
|
upSpecialURL: c.Host.API + _upSpecial, |
|
flowJudge: c.Host.Videoup + _flowjudge, |
|
staffApplies: c.Host.Videoup + _staffApplies, |
|
staffApply: c.Host.Videoup + _staffApply, |
|
staffCheck: c.Host.Videoup + _staffCheck, |
|
} |
|
return |
|
} |
|
|
|
// Ping fn |
|
func (d *Dao) Ping(c context.Context) (err error) { |
|
if err = d.pingRedis(c); err != nil { |
|
return |
|
} |
|
return |
|
} |
|
|
|
// Close fn |
|
func (d *Dao) Close() (err error) { |
|
if d.redis != nil { |
|
d.redis.Close() |
|
} |
|
if d.mc != nil { |
|
d.mc.Close() |
|
} |
|
return d.db.Close() |
|
} |
|
|
|
func staffKey(aid int64) string { |
|
return fmt.Sprintf("staff_aid_%d", aid) |
|
} |
|
|
|
func (d *Dao) cacheSFStaffData(aid int64) string { |
|
return fmt.Sprintf("staff_aid_sf_%d", aid) |
|
} |
|
|
|
//go:generate $GOPATH/src/go-common/app/tool/cache/gen |
|
type _cache interface { |
|
// cache: -singleflight=true -nullcache=[]*arcMdl.Staff{{ID:-1}} -check_null_code=len($)==1&&$[0].ID==-1 |
|
StaffData(c context.Context, aid int64) ([]*arcMdl.Staff, error) |
|
ViewPoint(c context.Context, aid int64, cid int64) (vp *arcMdl.ViewPointRow, err error) |
|
} |
|
|
|
//go:generate $GOPATH/src/go-common/app/tool/cache/mc |
|
type _mc interface { |
|
// mc: -key=staffKey |
|
CacheStaffData(c context.Context, key int64) ([]*arcMdl.Staff, error) |
|
// 这里也支持自定义注释 会替换默认的注释 |
|
// mc: -key=staffKey -expire=3 -encode=json|gzip |
|
AddCacheStaffData(c context.Context, key int64, value []*arcMdl.Staff) error |
|
// mc: -key=staffKey |
|
DelCacheStaffData(c context.Context, key int64) error |
|
//mc: -key=viewPointCacheKey -expire=_viewPointExp -encode=json |
|
AddCacheViewPoint(c context.Context, aid int64, vp *arcMdl.ViewPointRow, cid int64) (err error) |
|
//mc: -key=viewPointCacheKey |
|
CacheViewPoint(c context.Context, aid int64, cid int64) (vp *arcMdl.ViewPointRow, err error) |
|
}
|
|
|