hot_fix_002.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. package hot_fix
  2. import (
  3. "github.com/allanpk716/ChineseSubFinder/internal/dao"
  4. "github.com/allanpk716/ChineseSubFinder/internal/models"
  5. "github.com/sirupsen/logrus"
  6. )
  7. /*
  8. 因为之前有失误把部分临时功能给发布了,所以之前定义 sha1 作为文件的唯一值,现在觉得要升级到 sha256
  9. 那么之前有的需要进行清理一次,然后才能够正确的执行后续新的 sha256 的逻辑
  10. */
  11. type HotFix002 struct {
  12. log *logrus.Logger
  13. }
  14. func NewHotFix002(log *logrus.Logger) *HotFix002 {
  15. return &HotFix002{log: log}
  16. }
  17. func (h HotFix002) GetKey() string {
  18. return "002"
  19. }
  20. func (h HotFix002) 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 HotFix002) process() (bool, error) {
  28. delSubInfo := func(imdbInfo *models.IMDBInfo, cacheInfo *models.VideoSubInfo) bool {
  29. err := dao.GetDb().Model(imdbInfo).Association("VideoSubInfos").Delete(cacheInfo)
  30. if err != nil {
  31. h.log.Warningln("ScanPlayedVideoSubInfo.Scan", ".Delete Association", cacheInfo.SubName, err)
  32. return false
  33. }
  34. // 继续删除这个对象
  35. dao.GetDb().Delete(cacheInfo)
  36. h.log.Infoln("HotFix 002, Sub Association", cacheInfo.SubName)
  37. return true
  38. }
  39. var imdbInfos []models.IMDBInfo
  40. // 把嵌套关联的 has many 的信息都查询出来
  41. dao.GetDb().Preload("VideoSubInfos").Find(&imdbInfos)
  42. for _, info := range imdbInfos {
  43. for _, oneSubInfo := range info.VideoSubInfos {
  44. delSubInfo(&info, &oneSubInfo)
  45. }
  46. }
  47. return true, nil
  48. }