go-common/app/interface/main/tv/dao/audit/transcode.go
2019-04-22 18:49:16 +08:00

77 lines
2.4 KiB
Go

package audit
import (
"context"
"fmt"
"go-common/library/ecode"
"go-common/library/log"
"go-common/library/time"
"go-common/library/xstr"
)
const (
_PgcCID = "SELECT `id` FROM `tv_content` WHERE `cid` = ? AND `is_deleted` = 0"
_UgcCID = "SELECT `id` FROM `ugc_video` WHERE `cid` = ? AND `deleted` = 0"
_transcodePGC = "UPDATE `tv_content` SET `transcoded` = ?, mark_time = NOW() WHERE `id` IN (%s) "
_transcodeUGC = "UPDATE `ugc_video` SET `transcoded` = ? WHERE `id` IN (%s)"
_applyPGC = "UPDATE `tv_content` SET `apply_time` = ? WHERE `id` IN (%s)"
)
// checkCID picks one ugc or pgc video data with its cid
func (d *Dao) checkCID(c context.Context, cid int64, query string) (ids []int64, err error) {
rows, err := d.db.Query(c, query, cid)
if err != nil {
log.Error("checkCID d.db.Query (%s) cid %d, error(%v)", query, cid, err)
return
}
defer rows.Close()
for rows.Next() {
var li int64
if err = rows.Scan(&li); err != nil {
log.Error("checkCID Query (%s) row.Scan error(%v)", query, err)
return
}
ids = append(ids, li)
}
if err = rows.Err(); err != nil {
log.Error("checkCID Query (%s) rows Err cid %d, err %v", query, cid, err)
return
}
if len(ids) == 0 {
err = ecode.NothingFound
}
return
}
// UgcCID picks one ugc video data with its cid
func (d *Dao) UgcCID(c context.Context, cid int64) (ids []int64, err error) {
return d.checkCID(c, cid, _UgcCID)
}
// PgcCID picks one ugc video data with its cid
func (d *Dao) PgcCID(c context.Context, cid int64) (ids []int64, err error) {
return d.checkCID(c, cid, _PgcCID)
}
func (d *Dao) updateCIDs(c context.Context, query string, value interface{}) (err error) {
if _, err = d.db.Exec(c, query, value); err != nil {
log.Error("updateCIDs, Query %s, d.db.Exec.error(%v)", query, err)
}
return
}
// PgcTranscode updates the transcoded status of an ep data
func (d *Dao) PgcTranscode(c context.Context, ids []int64, action int64) (err error) {
return d.updateCIDs(c, fmt.Sprintf(_transcodePGC, xstr.JoinInts(ids)), action)
}
// UgcTranscode updates the transcoded status of an ep data
func (d *Dao) UgcTranscode(c context.Context, ids []int64, action int64) (err error) {
return d.updateCIDs(c, fmt.Sprintf(_transcodeUGC, xstr.JoinInts(ids)), action)
}
// ApplyPGC saves pgc apply_time; only PGC needs this
func (d *Dao) ApplyPGC(c context.Context, ids []int64, aTime int64) (err error) {
return d.updateCIDs(c, fmt.Sprintf(_applyPGC, xstr.JoinInts(ids)), time.Time(aTime))
}