hot_fix_006.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package hot_fix
  2. import (
  3. "github.com/ChineseSubFinder/ChineseSubFinder/internal/models"
  4. "gorm.io/gorm"
  5. "github.com/ChineseSubFinder/ChineseSubFinder/internal/dao"
  6. "github.com/sirupsen/logrus"
  7. )
  8. /*
  9. 因为 TMDB ID 是区分 Movie 和 Series 的,所以···需要把本地的缓存清空
  10. */
  11. type HotFix006 struct {
  12. log *logrus.Logger
  13. }
  14. func NewHotFix006(log *logrus.Logger) *HotFix006 {
  15. return &HotFix006{log: log}
  16. }
  17. func (h HotFix006) GetKey() string {
  18. return "006"
  19. }
  20. func (h HotFix006) Process() (interface{}, error) {
  21. defer func() {
  22. h.log.Infoln("Hotfix", h.GetKey(), "End")
  23. }()
  24. h.log.Infoln("Hotfix", h.GetKey(), "Start...")
  25. return h.process()
  26. }
  27. func (h HotFix006) process() (bool, error) {
  28. // 查询所有的 IMDB info 出来,把 TMDB ID 设置为 空,需要走重写获取的逻辑
  29. var imdbInfos []models.IMDBInfo
  30. dao.GetDb().Find(&imdbInfos)
  31. err := dao.GetDb().Transaction(func(tx *gorm.DB) error {
  32. for _, info := range imdbInfos {
  33. info.TmdbId = ""
  34. tx.Save(&info)
  35. }
  36. return nil
  37. })
  38. if err != nil {
  39. return false, err
  40. }
  41. // media_infos 表需要全部查询出来删除
  42. var mediaInfos []models.MediaInfo
  43. dao.GetDb().Find(&mediaInfos)
  44. err = dao.GetDb().Transaction(func(tx *gorm.DB) error {
  45. for _, info := range mediaInfos {
  46. tx.Delete(&info)
  47. }
  48. return nil
  49. })
  50. if err != nil {
  51. return false, err
  52. }
  53. return true, nil
  54. }