2 Star 0 Fork 1

taotechip / modules

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
init.go 1.28 KB
一键复制 编辑 原始数据 按行查看 历史
kyugao 提交于 2021-04-22 17:29 . test gorm
package database
import (
"gitee.com/taotechip/modules/logger"
"github.com/jinzhu/configor"
"gorm.io/gorm"
)
var connMaps = make(map[string]*gorm.DB)
var dialectors = map[string]func(map[string]string) (gorm.Dialector, error){
"mysql": MysqlDialector,
"oracle": OracleDialector,
}
var configs = make([]struct {
Name string
Type string
Default bool
Config map[string]string
}, 0)
func init() {
configor.Load(&configs, "conf/database.yml")
logger.Info("读取%d个数据源", len(configs))
var defaultConn *gorm.DB
for i, cfg := range configs {
dialector, ok := dialectors[cfg.Type]
if !ok {
logger.Warn("不支持的数据库类型[%s]", cfg.Type)
continue
}
dialect, err := dialector(cfg.Config)
if err != nil {
logger.Error("[%s]%s", cfg.Name, err.Error())
continue
}
dbConn, err := gorm.Open(dialect, &gorm.Config{})
if err != nil {
logger.Error("[%s]数据库连接错误 %s", cfg.Name, err.Error())
continue
}
connMaps[cfg.Name] = dbConn
if cfg.Default {
defaultConn = dbConn
}
if i == 0 {
defaultConn = dbConn
}
}
connMaps["default"] = defaultConn
}
func GetConn() (conn *gorm.DB) {
return GetConnWithName("default")
}
func GetConnWithName(name string) (conn *gorm.DB) {
return connMaps[name].Session(&gorm.Session{})
}
1
https://gitee.com/taotechip/modules.git
git@gitee.com:taotechip/modules.git
taotechip
modules
modules
v0.5.5

搜索帮助

53164aa7 5694891 3bd8fe86 5694891