package mongo import ( "errors" "go.mongodb.org/mongo-driver/mongo" "mongo.games.com/goserver/core/logger" "mongo.games.com/game/mongo/internal" ) type Config = internal.Config type DatabaseConfig = internal.DatabaseConfig type Collection = internal.Collection type Database = internal.Database var _manager *internal.Manager var _conf *internal.Config // GetConfig 获取配置 func GetConfig() *Config { return _conf } // Init 初始化 func Init(conf *Config) { _conf = conf _manager = internal.NewManager(_conf) } // Restart 重启 func Restart() { if _manager == nil { logger.Logger.Errorf("mongo manager is nil, please call Init() first") return } _manager.Restart(_conf) } // Close 关闭 func Close() { internal.Close(_manager) } // GetGlobalCollection 获取全局库 // database: 数据库名称 // collection: 集合名称 func GetGlobalCollection(database, collection string) (*Collection, error) { if _manager == nil { return nil, errors.New("mongo manager is nil, please call Init() first") } return _manager.GetCollection("global", database, collection) } // GetCollection 获取平台库 // platform: 平台id // database: 数据库名称 // collection: 集合名称 func GetCollection(platform, database, collection string) (*Collection, error) { if _manager == nil { return nil, errors.New("mongo manager is nil, please call Init() first") } return _manager.GetCollection(platform, database, collection) } // GetClient 获取数据库连接 // 默认获取的是 Global, log 的数据库连接 func GetClient() (*mongo.Client, error) { if _manager == nil { return nil, errors.New("mongo manager is nil, please call Init() first") } c, err := _manager.GetCollection("global", "log", "empty") if err != nil { return nil, err } return c.Database.Client, nil }