mirror of
https://github.com/go-admin-team/go-admin.git
synced 2026-09-22 18:37:43 +00:00
60 lines
1.3 KiB
Go
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)
|
|
}
|