49 lines
1.5 KiB
Go
49 lines
1.5 KiB
Go
package dao
|
|
|
|
import (
|
|
"context"
|
|
|
|
plmdl "go-common/app/interface/main/playlist/model"
|
|
"go-common/app/job/main/playlist/model"
|
|
)
|
|
|
|
const (
|
|
_statSQL = "SELECT id,mid,fid,view,reply,fav,share,mtime FROM `playlist_stat` WHERE id = ?"
|
|
_upViewSQL = "UPDATE playlist_stat SET view= ?, mtime=mtime WHERE id = ?"
|
|
_upFavSQL = "UPDATE playlist_stat SET fav= ?, mtime=mtime WHERE id = ?"
|
|
_upReplySQL = "UPDATE playlist_stat SET reply= ?, mtime=mtime WHERE id = ?"
|
|
_upShareSQL = "UPDATE playlist_stat SET share= ?, mtime=mtime WHERE id = ?"
|
|
)
|
|
|
|
// Update updates stat in db.
|
|
func (d *Dao) Update(c context.Context, stat *model.StatM, tp string) (rows int64, err error) {
|
|
var tmpSQL string
|
|
switch tp {
|
|
case model.ViewCountType:
|
|
tmpSQL = _upViewSQL
|
|
case model.FavCountType:
|
|
tmpSQL = _upFavSQL
|
|
case model.ReplyCountType:
|
|
tmpSQL = _upReplySQL
|
|
case model.ShareCountType:
|
|
tmpSQL = _upShareSQL
|
|
}
|
|
res, err := d.db.Exec(c, tmpSQL, *stat.Count, stat.ID)
|
|
if err != nil {
|
|
PromError("db:更新计数", tp+" Update(%d,%+v) error(%v)", stat.ID, stat, err)
|
|
return
|
|
}
|
|
rows, err = res.RowsAffected()
|
|
return
|
|
}
|
|
|
|
// Stat returns stat info.
|
|
func (d *Dao) Stat(c context.Context, pid int64) (stat *plmdl.PlStat, err error) {
|
|
row := d.db.QueryRow(c, _statSQL, pid)
|
|
stat = &plmdl.PlStat{}
|
|
if err = row.Scan(&stat.ID, &stat.Mid, &stat.Fid, &stat.View, &stat.Reply, &stat.Fav, &stat.Share, &stat.MTime); err != nil {
|
|
PromError("db:读取计数", "Stat(%v) error(%v)", pid, err)
|
|
}
|
|
return
|
|
}
|