package db import ( "context" "f1-game/internal/component/db" dbFacade "f1-game/internal/component/db/facade" nameDB "f1-game/internal/name/db" clog "github.com/cherry-game/cherry/logger" "go.mongodb.org/mongo-driver/v2/bson" ) var dbComponent = db.New("map_db_component") func NewMap() *db.Component { dbComponent.AddTable( &MapNodeTable{}, &SeasonTable{}, &LogicBuildTable{}, &LogicCastleTable{}, &LogicMonsterTable{}, &LogicMonsterFlushTable{}, &LogicMarchTable{}, &LogicTileTable{}, &LogicResTable{}, &MapPlayerTable{}, &MapPlayerStorageTable{}, &MapPlayerReportTable{}, &MapLeagueTable{}, &MapLeagueStorageTable{}, &MapLeagueMailTable{}, &MapLeagueMemberTable{}, &MapLeagueLogTable{}, &MapLeagueReportTable{}, &LogicLegionTable{}, &LogicWatcherTable{}, &LogicSiegeTable{}, &MapExchangeTable{}, &MapExchangeStatsTable{}, &MapExchangeDeliverTable{}, &MapPlayerRankTable{}, &MapLeagueRankTable{}, &MapScoutTable{}, ) dbComponent.AddScript( &ver00001{}, &ver00002{}, &ver00003{}, //&ver00004{}, &ver00005{}, &ver00006{}, &ver00007{}, &ver00008{}, &ver00009{}, &ver00010{}, ) dbComponent.SetOnLoadFunc( mapNodeCheck, // initMapBornPointTable, loadMapPlayerStorageTable, loadMapPlayerReportTables, ) return dbComponent } func save2Queue(val dbFacade.Table) { dbComponent.DBQueue().InQueue(val) } func loadLogicTable[T dbFacade.Table](nodeID string, deleteField string, f func(T)) { var ( t T ctx = context.TODO() collection = dbComponent.Collection(t.TableName()) filter = bson.M{ nameDB.Field_NodeID: nodeID, deleteField: bson.M{"$in": []any{false, nil}}, } pageNum int32 = 1 pageSize int32 = 100000 count int64 = 0 ) for { list, _, err := db.Pagination[T](collection, ctx, filter, nil, nil, pageNum, pageSize, false) if err != nil { clog.Errorf("[Load%] err = %v", t.TableName(), err) break } if len(list) < 1 { break } for _, table := range list { table.CheckField() f(table) } pageNum++ count += int64(len(list)) } clog.Infof("Load %s, count = %d", t.TableName(), count) }