package db import "C" import ( "app.yhyue.com/moapp/jypkg/middleground" "github.com/gogf/gf/v2/frame/g" "log" "app.yhyue.com/moapp/jybase/mysql" "github.com/gogf/gf/v2/os/gcfg" "github.com/gogf/gf/v2/os/gctx" "app.yhyue.com/moapp/jybase/mongodb" "app.yhyue.com/moapp/jybase/redis" "app.yhyue.com/moapp/jypkg/compatible" ) var ( Mgo_Log *mongodb.MongodbSim Mgo *mongodb.MongodbSim Mysql *mysql.Mysql Tidb *mysql.Mysql TidbPoint *mysql.Mysql Compatible *compatible.Compatible MiddleGround *middleground.Middleground ) type MgoConf struct { Address string Size int DbName string ReplSet string UserName string Password string Collection string Collection_back string } type MysqlConf struct { DbName string `json:"dbName"` Address string `json:"address"` UserName string `json:"userName"` PassWord string `json:"passWord"` MaxOpenConns int `json:"maxOpenConns"` MaxIdleConns int `json:"maxIdleConns"` } func init() { redis.InitRedis(gcfg.Instance().MustGet(gctx.New(), "databases.redis", "").String()) log.Println("初始化 redis") var mgologConf MgoConf if err := gcfg.Instance().MustGet(gctx.New(), "databases.mogLog").Scan(&mgologConf); err == nil { Mgo_Log = &mongodb.MongodbSim{ MongodbAddr: mgologConf.Address, Size: mgologConf.Size, DbName: mgologConf.DbName, ReplSet: mgologConf.ReplSet, UserName: mgologConf.UserName, Password: mgologConf.Password, } Mgo_Log.InitPool() log.Printf("初始化 mongodb log 完成 %+v\n", mgologConf) } var mgoConf MgoConf if err := gcfg.Instance().MustGet(gctx.New(), "databases.mongodb").Scan(&mgoConf); err == nil { Mgo = &mongodb.MongodbSim{ MongodbAddr: mgoConf.Address, Size: mgoConf.Size, DbName: mgoConf.DbName, ReplSet: mgoConf.ReplSet, UserName: mgoConf.UserName, Password: mgoConf.Password, } Mgo.InitPool() log.Printf("初始化 mongodb 完成 %+v\n", mgoConf) } var mysqlConf MysqlConf if err := gcfg.Instance().MustGet(gctx.New(), "databases.mysql").Scan(&mysqlConf); err == nil { if mysqlConf.Address != "" { log.Println("--初始化 mysql--") Mysql = &mysql.Mysql{ Address: mysqlConf.Address, UserName: mysqlConf.UserName, PassWord: mysqlConf.PassWord, DBName: mysqlConf.DbName, MaxOpenConns: mysqlConf.MaxOpenConns, MaxIdleConns: mysqlConf.MaxIdleConns, } Mysql.Init() } } var tidbConf MysqlConf if err := gcfg.Instance().MustGet(gctx.New(), "databases.tidb").Scan(&tidbConf); err == nil { if tidbConf.Address != "" { log.Println("--初始化 tidb--") Tidb = &mysql.Mysql{ Address: tidbConf.Address, UserName: tidbConf.UserName, PassWord: tidbConf.PassWord, DBName: tidbConf.DbName, MaxOpenConns: tidbConf.MaxOpenConns, MaxIdleConns: tidbConf.MaxIdleConns, } Tidb.Init() } } var tidbPointConf MysqlConf if err := gcfg.Instance().MustGet(gctx.New(), "databases.tidbPoint").Scan(&tidbPointConf); err == nil { if tidbPointConf.Address != "" { log.Println("--初始化 tidb--") TidbPoint = &mysql.Mysql{ Address: tidbPointConf.Address, UserName: tidbPointConf.UserName, PassWord: tidbPointConf.PassWord, DBName: tidbPointConf.DbName, MaxOpenConns: tidbPointConf.MaxOpenConns, MaxIdleConns: tidbPointConf.MaxIdleConns, } TidbPoint.Init() } } MiddleGround = middleground.NewMiddleground(g.Cfg().MustGet(gctx.New(), "etcd.address").Strings()). RegUserCenter(g.Cfg().MustGet(gctx.New(), "etcd.userCenterKey").String()) Compatible = compatible.NewCompatible(Mgo, Tidb, Mysql, MiddleGround) }