package db import ( capp "f1-game/internal/cherry_app" "f1-game/internal/data" nameDB "f1-game/internal/name/db" "fmt" clog "github.com/cherry-game/cherry/logger" ) // ver00010 修正建筑耐久 type ver00010 struct { } // Version 手动自增,必需唯一 func (ver00010) Version() int32 { return 10 } func (ver00010) Enable() bool { return false } func (p ver00010) Execute() bool { clog.Infof("Execute %v, nodeID = %s", p.Version(), capp.NodeID()) siegeCollection := dbComponent.DB().Collection(nameDB.Table_LogicSiege) siegeTables := getAllTables[*LogicSiegeTable](nameDB.Table_LogicSiege) buildTables := getAllTableMap[*LogicBuildTable](nameDB.Table_LogicBuild) if len(siegeTables) > 0 { for _, siegeTable := range siegeTables { if buildRow, ok := data.MapBuild.GetByConfigID(siegeTable.ConfigID); ok { if buildTable, ok := buildTables[siegeTable.PrimaryValue()]; ok { if buildTable.IsBuilding { siegeTable.Durability = buildRow.BuildingDurability } else { siegeTable.Durability = buildRow.Durability } } else { clog.Warnf("[Execute %v] buildTable not found, objectID = %d, nodeID = %d", p.Version(), siegeTable.ObjectID, siegeTable.NodeID) } } else if castleRow, ok := data.MapCastle.GetByConfigID(siegeTable.ConfigID); ok { siegeTable.Durability = castleRow.Durability } } } if err := bulkWrite(siegeCollection, siegeTables); err != nil { clog.Errorf("[Execute %v] error = %v", p.Version(), err) return false } clog.Debugf("[Execute %v] update siege table [count = %d]", p.Version(), len(siegeTables)) return true } func (p ver00010) Desc() string { return fmt.Sprintf("[migrator - %d] Add Siege Table", p.Version()) }