| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- package datasource
- import (
- "fmt"
- _ "github.com/go-sql-driver/mysql"
- "log"
- "sync"
- "xorm.io/xorm"
- "xorm.io/xorm/caches"
- log2 "xorm.io/xorm/log"
- "xorm.io/xorm/names"
- configs2 "xps/cmd/config"
- )
- var (
- masterEngine *xorm.Engine
- slaveEngine *xorm.Engine
- idDbEngine *xorm.Engine
- lock sync.Mutex
- )
- func InstanceMaster() *xorm.Engine {
- if masterEngine != nil {
- return masterEngine
- }
- lock.Lock()
- defer lock.Unlock()
- if masterEngine != nil {
- return masterEngine
- }
- c := configs2.MasterDbConfig
- driveSource := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8",
- c.User, c.Pwd, c.Host, c.Port, c.DbName)
- engine, err := xorm.NewEngine(configs2.DriverName, driveSource)
- if err != nil {
- log.Fatal("dbhelper", "DbInstanceMaster", err)
- return nil
- }
- //Debug mode
- engine.ShowSQL(true)
- engine.Logger().SetLevel(log2.LOG_DEBUG)
- //Log
- engine.SetTZLocation(configs2.SysTimeLocation)
- //performance
- cache := caches.NewLRUCacher(caches.NewMemoryStore(), 1000)
- engine.SetDefaultCacher(cache)
- masterEngine = engine
- return engine
- }
- // InstanceSlave Slave
- func InstanceSlave() *xorm.Engine {
- if slaveEngine != nil {
- return slaveEngine
- }
- lock.Lock()
- defer lock.Unlock()
- if slaveEngine != nil {
- return slaveEngine
- }
- c := configs2.SlaveDbConfig
- driveSource := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8",
- c.User, c.Pwd, c.Host, c.Port, c.DbName)
- engine, err := xorm.NewEngine(configs2.DriverName, driveSource)
- if err != nil {
- log.Fatal("dbhelper", "DbInstanceMaster", err)
- return nil
- }
- engine.SetTZLocation(configs2.SysTimeLocation)
- engine.SetColumnMapper(names.SnakeMapper{})
- slaveEngine = engine
- return engine
- }
- // InstanceIDServer Slave
- func InstanceIDServer() *xorm.Engine {
- if idDbEngine != nil {
- return idDbEngine
- }
- lock.Lock()
- defer lock.Unlock()
- if idDbEngine != nil {
- return idDbEngine
- }
- c := configs2.IDDbConfig
- driveSource := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8",
- c.User, c.Pwd, c.Host, c.Port, c.DbName)
- engine, err := xorm.NewEngine(configs2.DriverName, driveSource)
- if err != nil {
- log.Fatal("dbhelper", "DbInstanceIDServer", err)
- return nil
- }
- engine.SetTZLocation(configs2.SysTimeLocation)
- idDbEngine = engine
- return engine
- }
|