| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- package db
- import (
- "context"
- "errors"
- capp "f1-game/internal/cherry_app"
- "f1-game/internal/data"
- nameDB "f1-game/internal/name/db"
- "fmt"
- clog "github.com/cherry-game/cherry/logger"
- "go.mongodb.org/mongo-driver/v2/bson"
- "go.mongodb.org/mongo-driver/v2/mongo"
- )
- // ver00009 修正 logic_watcher_table
- type ver00009 struct {
- }
- // Version 手动自增,必需唯一
- func (ver00009) Version() int32 {
- return 9
- }
- func (ver00009) Enable() bool {
- return false
- }
- func (p ver00009) Execute() bool {
- clog.Infof("Execute %v, nodeID = %s", p.Version(), capp.NodeID())
- siegeCollection := dbComponent.DB().Collection(nameDB.Table_LogicSiege)
- var newSiegeTables []*LogicSiegeTable
- castleList := getAllTables[*LogicCastleTable](nameDB.Table_LogicCastle)
- if len(castleList) > 0 {
- for _, castleTable := range castleList {
- filter := bson.M{
- nameDB.Field_ObjectID: castleTable.ObjectID,
- nameDB.Field_NodeID: castleTable.NodeID,
- }
- err := siegeCollection.FindOne(context.Background(), filter) //.Decode(&LogicSiegeTable{})
- if errors.Is(err.Err(), mongo.ErrNoDocuments) {
- castleRow, _ := data.MapCastle.GetByConfigID(castleTable.ConfigID)
- siegeTable := NewLogicSiegeTable(castleTable.ObjectID, castleTable.NodeID, castleTable.ConfigID)
- siegeTable.Durability = castleRow.Durability
- siegeTable.DefendArmy = castleRow.DefendArmy
- newSiegeTables = append(newSiegeTables, siegeTable)
- }
- }
- }
- buildList := getAllTables[*LogicBuildTable](nameDB.Table_LogicBuild)
- if len(buildList) > 0 {
- for _, buildTable := range buildList {
- filter := bson.M{
- nameDB.Field_ObjectID: buildTable.ObjectID,
- nameDB.Field_NodeID: buildTable.NodeID,
- }
- err := siegeCollection.FindOne(context.Background(), filter) //.Decode(&LogicSiegeTable{})
- if errors.Is(err.Err(), mongo.ErrNoDocuments) {
- buildRow, _ := data.MapBuild.GetByConfigID(buildTable.ConfigID)
- siegeTable := NewLogicSiegeTable(buildTable.ObjectID, buildTable.NodeID, buildTable.ConfigID)
- siegeTable.Durability = buildRow.Durability
- siegeTable.DefendArmy = buildRow.DefendArmy
- newSiegeTables = append(newSiegeTables, siegeTable)
- }
- }
- }
- if len(newSiegeTables) > 0 {
- if err := bulkWrite(siegeCollection, newSiegeTables); err != nil {
- clog.Errorf("[migrate %v] error = %v", p.Version(), err)
- return false
- }
- clog.Debugf("[migrate %v] add new siege table [count = %d]", p.Version(), len(newSiegeTables))
- }
- return true
- }
- func (p ver00009) Desc() string {
- return fmt.Sprintf("[migrator - %d] Add Siege Table", p.Version())
- }
|