| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- package db
- import (
- "errors"
- dbFacade "f1-game/internal/component/db/facade"
- nameDB "f1-game/internal/name/db"
- dbSeason "f1-game/nodes/map/internal/db/data/season"
- clog "github.com/cherry-game/cherry/logger"
- "go.mongodb.org/mongo-driver/v2/bson"
- "go.mongodb.org/mongo-driver/v2/mongo"
- )
- type (
- // SeasonTable 赛季表
- SeasonTable struct {
- NodeID string `bson:"NodeID,omitempty"` // node id
- StartTime int64 `bson:"StartTime,omitempty"` // 赛季开始时间
- SeasonID int32 `bson:"SeasonID,omitempty"` // 赛季ID
- SeasonQuest dbSeason.SeasonQuest `bson:"SeasonQuest,omitempty"` // 赛季霸业任务
- dbFacade.TableBase `bson:",inline"`
- isChangeData bool `bson:"-"`
- }
- )
- func (p *SeasonTable) TableName() string {
- return nameDB.Table_MapSeason
- }
- func (p *SeasonTable) PrimaryValue() any {
- return p.SeasonID
- }
- func (p *SeasonTable) CheckField() {
- p.SeasonQuest.CheckField()
- }
- func (p *SeasonTable) Filter() bson.M {
- return bson.M{
- nameDB.Field_NodeID: p.NodeID,
- }
- }
- func (p *SeasonTable) SetChangeData() {
- p.isChangeData = true
- }
- func (p *SeasonTable) Save2Queue() {
- if p.isChangeData {
- save2Queue(p)
- p.isChangeData = false
- }
- }
- func newSeasonTable(nodeID string) *SeasonTable {
- table := &SeasonTable{
- NodeID: nodeID,
- }
- table.CheckField()
- return table
- }
- func GetSeasonTable(nodeID string) *SeasonTable {
- if val, ok := mapSeasonCache.GetIfPresent(nodeID); ok {
- return val.(*SeasonTable)
- }
- seasonTable := GetSeasonTableFromDB(nodeID)
- mapSeasonCache.Put(nodeID, seasonTable)
- return seasonTable
- }
- func GetSeasonTableFromDB(nodeID string) *SeasonTable {
- seasonTable := newSeasonTable(nodeID)
- filter := bson.M{
- nameDB.Field_NodeID: nodeID,
- }
- err := dbComponent.FindOne(seasonTable, filter)
- if err != nil {
- if errors.Is(err, mongo.ErrNoDocuments) {
- clog.Warnf("[nodeID = %v] not found, create new one", seasonTable.NodeID)
- return seasonTable
- }
- clog.Errorf("nodeID = %v, err = %v", seasonTable.NodeID, err)
- return seasonTable
- }
- return seasonTable
- }
|