ver_00010.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package db
  2. import (
  3. capp "f1-game/internal/cherry_app"
  4. "f1-game/internal/data"
  5. nameDB "f1-game/internal/name/db"
  6. "fmt"
  7. clog "github.com/cherry-game/cherry/logger"
  8. )
  9. // ver00010 修正建筑耐久
  10. type ver00010 struct {
  11. }
  12. // Version 手动自增,必需唯一
  13. func (ver00010) Version() int32 {
  14. return 10
  15. }
  16. func (ver00010) Enable() bool {
  17. return false
  18. }
  19. func (p ver00010) Execute() bool {
  20. clog.Infof("Execute %v, nodeID = %s", p.Version(), capp.NodeID())
  21. siegeCollection := dbComponent.DB().Collection(nameDB.Table_LogicSiege)
  22. siegeTables := getAllTables[*LogicSiegeTable](nameDB.Table_LogicSiege)
  23. buildTables := getAllTableMap[*LogicBuildTable](nameDB.Table_LogicBuild)
  24. if len(siegeTables) > 0 {
  25. for _, siegeTable := range siegeTables {
  26. if buildRow, ok := data.MapBuild.GetByConfigID(siegeTable.ConfigID); ok {
  27. if buildTable, ok := buildTables[siegeTable.PrimaryValue()]; ok {
  28. if buildTable.IsBuilding {
  29. siegeTable.Durability = buildRow.BuildingDurability
  30. } else {
  31. siegeTable.Durability = buildRow.Durability
  32. }
  33. } else {
  34. clog.Warnf("[Execute %v] buildTable not found, objectID = %d, nodeID = %d", p.Version(), siegeTable.ObjectID, siegeTable.NodeID)
  35. }
  36. } else if castleRow, ok := data.MapCastle.GetByConfigID(siegeTable.ConfigID); ok {
  37. siegeTable.Durability = castleRow.Durability
  38. }
  39. }
  40. }
  41. if err := bulkWrite(siegeCollection, siegeTables); err != nil {
  42. clog.Errorf("[Execute %v] error = %v", p.Version(), err)
  43. return false
  44. }
  45. clog.Debugf("[Execute %v] update siege table [count = %d]", p.Version(), len(siegeTables))
  46. return true
  47. }
  48. func (p ver00010) Desc() string {
  49. return fmt.Sprintf("[migrator - %d] Add Siege Table", p.Version())
  50. }