hot_fix_002.go 1.6 KB

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