bilibili-backup/app/interface/main/tv/service/audit/transcode.go
2019-04-22 02:59:20 +00:00

76 lines
1.7 KiB
Go

package audit
import (
"context"
"go-common/app/interface/main/tv/model"
"go-common/library/ecode"
)
const (
_typeUGC = "ugc"
_typePGC = "pgc"
)
type cidExistFunc = func(context.Context, int64) ([]int64, error)
type cidTransFunc = func(context.Context, []int64, int64) error
type reqTrans struct {
CID int64
Action int64
CheckFunc cidExistFunc
TransFunc cidTransFunc
}
// Transcode update the video/ep's transcoded status
func (s *Service) Transcode(req *model.ReqTransode) (err error) {
var ctx = context.TODO()
if req.ContType == _typePGC {
err = s.transPGC(ctx, req.CID, req.Action)
} else if req.ContType == _typeUGC {
err = s.transUGC(ctx, req.CID, req.Action)
} else {
err = ecode.TvDangbeiWrongType
}
return
}
func commonTrans(ctx context.Context, req reqTrans) (err error) {
var ids []int64
if ids, err = req.CheckFunc(ctx, req.CID); err != nil {
return
}
if len(ids) == 0 {
return ecode.NothingFound
}
err = req.TransFunc(ctx, ids, req.Action)
return
}
func (s *Service) transPGC(ctx context.Context, cid int64, action int64) (err error) {
return commonTrans(ctx, reqTrans{
CID: cid,
Action: action,
CheckFunc: s.auditDao.PgcCID,
TransFunc: s.auditDao.PgcTranscode,
})
}
func (s *Service) transUGC(ctx context.Context, cid int64, action int64) (err error) {
return commonTrans(ctx, reqTrans{
CID: cid,
Action: action,
CheckFunc: s.auditDao.UgcCID,
TransFunc: s.auditDao.UgcTranscode,
})
}
// ApplyPGC saves the pgc transcode apply time
func (s *Service) ApplyPGC(ctx context.Context, req *model.ReqApply) (err error) {
return commonTrans(ctx, reqTrans{
CID: req.CID,
Action: req.ApplyTime,
CheckFunc: s.auditDao.PgcCID,
TransFunc: s.auditDao.ApplyPGC,
})
}