ver_00008.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package db
  2. import (
  3. "context"
  4. "errors"
  5. capp "f1-game/internal/cherry_app"
  6. nameDB "f1-game/internal/name/db"
  7. "fmt"
  8. clog "github.com/cherry-game/cherry/logger"
  9. "go.mongodb.org/mongo-driver/v2/bson"
  10. "go.mongodb.org/mongo-driver/v2/mongo"
  11. )
  12. // ver00008 修正 logic_watcher_table
  13. type ver00008 struct {
  14. }
  15. // Version 手动自增,必需唯一
  16. func (ver00008) Version() int32 {
  17. return 8
  18. }
  19. func (ver00008) Enable() bool {
  20. return false
  21. }
  22. func (p ver00008) Execute() bool {
  23. clog.Infof("Execute %v, nodeID = %s", p.Version(), capp.NodeID())
  24. list := getAllTables[*MapPlayerTable](nameDB.Table_MapPlayer)
  25. if len(list) == 0 {
  26. return true
  27. }
  28. var modifyCount int64
  29. watcherCollection := dbComponent.DB().Collection(nameDB.Table_LogicWatcher)
  30. for _, playerTable := range list {
  31. result, err := watcherCollection.UpdateByID(context.Background(), playerTable.PlayerID, bson.M{
  32. "$set": bson.M{"Watcher.LeagueID": playerTable.LeagueID},
  33. })
  34. if err != nil && !errors.Is(err, mongo.ErrNoDocuments) {
  35. clog.Errorf("[migrate %v] update playerID = %d error: %v", p.Version(), playerTable.PlayerID, err)
  36. return false
  37. }
  38. clog.Debugf("[migrate %v] update playerID = %d success", p.Version(), playerTable.PlayerID)
  39. modifyCount += result.ModifiedCount
  40. }
  41. clog.Infof("[migrate %v] update logic watcher table success: count = %d", p.Version(), modifyCount)
  42. return true
  43. }
  44. func (p ver00008) Desc() string {
  45. return fmt.Sprintf("[migrator - %d] Fix MarchViewID", p.Version())
  46. }