top_dy.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package dao
  2. import (
  3. "context"
  4. "database/sql"
  5. "fmt"
  6. "time"
  7. "go-common/library/log"
  8. )
  9. const (
  10. _topDyKeyFmt = "spc_td_%d"
  11. _topDySQL = `SELECT dy_id FROM top_dynamic_%d WHERE deleted_time = 0 AND mid = ?`
  12. _topDyAddSQL = `INSERT INTO top_dynamic_%d(mid,dy_id) VALUES (?,?) ON DUPLICATE KEY UPDATE dy_id = ?`
  13. _topDyDelSQL = `UPDATE top_dynamic_%d set deleted_time = ? WHERE mid = ?`
  14. )
  15. func topDyHit(mid int64) int64 {
  16. return mid % 10
  17. }
  18. func topDyKey(mid int64) string {
  19. return fmt.Sprintf(_topDyKeyFmt, mid)
  20. }
  21. // RawTopDynamic get top dynamic data from mysql.
  22. func (d *Dao) RawTopDynamic(c context.Context, mid int64) (dyID int64, err error) {
  23. var row = d.db.QueryRow(c, fmt.Sprintf(_topDySQL, topDyHit(mid)), mid)
  24. if err = row.Scan(&dyID); err != nil {
  25. if err == sql.ErrNoRows {
  26. err = nil
  27. } else {
  28. log.Error("RawTopDynamic row.Scan() error(%v)", err)
  29. }
  30. }
  31. return
  32. }
  33. // AddTopDynamic add top archive.
  34. func (d *Dao) AddTopDynamic(c context.Context, mid, dyID int64) (err error) {
  35. if _, err = d.db.Exec(c, fmt.Sprintf(_topDyAddSQL, topDyHit(mid)), mid, dyID, dyID); err != nil {
  36. log.Error("AddTopDynamic error d.db.Exec(%d,%d) error(%v)", mid, dyID, err)
  37. }
  38. return
  39. }
  40. // DelTopDynamic delete top archive.
  41. func (d *Dao) DelTopDynamic(c context.Context, mid int64, now time.Time) (err error) {
  42. if _, err = d.db.Exec(c, fmt.Sprintf(_topDyDelSQL, topDyHit(mid)), now, mid); err != nil {
  43. log.Error("DelTopDynamic error d.db.Exec(%d) error(%v)", mid, err)
  44. }
  45. return
  46. }