game_sync/mongo/export.go

82 lines
1.8 KiB
Go

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
}