| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- 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)
- }
|