Files
go-admin/common/database/initialize.go
T
2021-02-21 14:06:13 +08:00

60 lines
1.3 KiB
Go

package database
import (
. "log"
"time"
logCore "github.com/go-admin-team/go-admin-core/logger"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
"go-admin/common/global"
"go-admin/common/log"
mycasbin "go-admin/pkg/casbin"
"go-admin/tools"
toolsConfig "go-admin/tools/config"
)
// Setup 配置数据库
func Setup() {
for k := range toolsConfig.DatabasesConfig {
setupSimpleDatabase(k, toolsConfig.DatabasesConfig[k])
}
}
func setupSimpleDatabase(host string, c *toolsConfig.Database) {
if global.Driver == "" {
global.Driver = c.Driver
}
log.Infof("%s => %s", host, tools.Green(c.Source))
db, err := gorm.Open(open[c.Driver](c.Source), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true,
},
Logger: logger.New(
New(logCore.DefaultLogger.Options().Out, "\r\n", LstdFlags),
logger.Config{
SlowThreshold: time.Second,
Colorful: true,
LogLevel: logger.LogLevel(
logCore.DefaultLogger.Options().Level.LevelForGorm()),
},
),
})
if err != nil {
log.Fatal(tools.Red(c.Driver+" connect error :"), err)
} else {
log.Info(tools.Green(c.Driver + " connect success !"))
}
e := mycasbin.Setup(db, "sys_")
if host == "*" {
global.Eloquent = db
}
global.Cfg.SetDb(host, db)
global.Cfg.SetCasbin(host, e)
}