bilibili-backup/app/interface/main/space/dao/top_dy.go

55 lines
1.5 KiB
Go
Raw Normal View History

2019-04-22 10:59:20 +08:00
package dao
import (
"context"
"database/sql"
"fmt"
"time"
"go-common/library/log"
)
const (
_topDyKeyFmt = "spc_td_%d"
_topDySQL = `SELECT dy_id FROM top_dynamic_%d WHERE deleted_time = 0 AND mid = ?`
_topDyAddSQL = `INSERT INTO top_dynamic_%d(mid,dy_id) VALUES (?,?) ON DUPLICATE KEY UPDATE dy_id = ?`
_topDyDelSQL = `UPDATE top_dynamic_%d set deleted_time = ? WHERE mid = ?`
)
func topDyHit(mid int64) int64 {
return mid % 10
}
func topDyKey(mid int64) string {
return fmt.Sprintf(_topDyKeyFmt, mid)
}
// RawTopDynamic get top dynamic data from mysql.
func (d *Dao) RawTopDynamic(c context.Context, mid int64) (dyID int64, err error) {
var row = d.db.QueryRow(c, fmt.Sprintf(_topDySQL, topDyHit(mid)), mid)
if err = row.Scan(&dyID); err != nil {
if err == sql.ErrNoRows {
err = nil
} else {
log.Error("RawTopDynamic row.Scan() error(%v)", err)
}
}
return
}
// AddTopDynamic add top archive.
func (d *Dao) AddTopDynamic(c context.Context, mid, dyID int64) (err error) {
if _, err = d.db.Exec(c, fmt.Sprintf(_topDyAddSQL, topDyHit(mid)), mid, dyID, dyID); err != nil {
log.Error("AddTopDynamic error d.db.Exec(%d,%d) error(%v)", mid, dyID, err)
}
return
}
// DelTopDynamic delete top archive.
func (d *Dao) DelTopDynamic(c context.Context, mid int64, now time.Time) (err error) {
if _, err = d.db.Exec(c, fmt.Sprintf(_topDyDelSQL, topDyHit(mid)), now, mid); err != nil {
log.Error("DelTopDynamic error d.db.Exec(%d) error(%v)", mid, err)
}
return
}