1\
This commit is contained in:
65
common/database/initialize.go
Normal file
65
common/database/initialize.go
Normal file
@ -0,0 +1,65 @@
|
||||
package database
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
log "github.com/go-admin-team/go-admin-core/logger"
|
||||
"github.com/go-admin-team/go-admin-core/sdk"
|
||||
toolsConfig "github.com/go-admin-team/go-admin-core/sdk/config"
|
||||
"github.com/go-admin-team/go-admin-core/sdk/pkg"
|
||||
mycasbin "github.com/go-admin-team/go-admin-core/sdk/pkg/casbin"
|
||||
toolsDB "github.com/go-admin-team/go-admin-core/tools/database"
|
||||
. "github.com/go-admin-team/go-admin-core/tools/gorm/logger"
|
||||
"gorm.io/gorm"
|
||||
"gorm.io/gorm/logger"
|
||||
"gorm.io/gorm/schema"
|
||||
|
||||
"go-admin/common/global"
|
||||
)
|
||||
|
||||
// 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, pkg.Green(c.Source))
|
||||
registers := make([]toolsDB.ResolverConfigure, len(c.Registers))
|
||||
for i := range c.Registers {
|
||||
registers[i] = toolsDB.NewResolverConfigure(
|
||||
c.Registers[i].Sources,
|
||||
c.Registers[i].Replicas,
|
||||
c.Registers[i].Policy,
|
||||
c.Registers[i].Tables)
|
||||
}
|
||||
resolverConfig := toolsDB.NewConfigure(c.Source, c.MaxIdleConns, c.MaxOpenConns, c.ConnMaxIdleTime, c.ConnMaxLifeTime, registers)
|
||||
db, err := resolverConfig.Init(&gorm.Config{
|
||||
NamingStrategy: schema.NamingStrategy{
|
||||
SingularTable: true,
|
||||
},
|
||||
Logger: New(
|
||||
logger.Config{
|
||||
SlowThreshold: time.Second,
|
||||
Colorful: true,
|
||||
LogLevel: logger.LogLevel(
|
||||
log.DefaultLogger.Options().Level.LevelForGorm()),
|
||||
},
|
||||
),
|
||||
}, opens[c.Driver])
|
||||
|
||||
if err != nil {
|
||||
log.Fatal(pkg.Red(c.Driver+" connect error :"), err)
|
||||
} else {
|
||||
log.Info(pkg.Green(c.Driver + " connect success !"))
|
||||
}
|
||||
|
||||
e := mycasbin.Setup(db, "")
|
||||
|
||||
sdk.Runtime.SetDb(host, db)
|
||||
sdk.Runtime.SetCasbin(host, e)
|
||||
}
|
||||
16
common/database/open.go
Normal file
16
common/database/open.go
Normal file
@ -0,0 +1,16 @@
|
||||
//go:build !sqlite3
|
||||
|
||||
package database
|
||||
|
||||
import (
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/driver/sqlserver"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
var opens = map[string]func(string) gorm.Dialector{
|
||||
"mysql": mysql.Open,
|
||||
"postgres": postgres.Open,
|
||||
"sqlserver": sqlserver.Open,
|
||||
}
|
||||
19
common/database/open_sqlite3.go
Normal file
19
common/database/open_sqlite3.go
Normal file
@ -0,0 +1,19 @@
|
||||
//go:build sqlite3
|
||||
// +build sqlite3
|
||||
|
||||
package database
|
||||
|
||||
import (
|
||||
"gorm.io/driver/mysql"
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/driver/sqlite"
|
||||
"gorm.io/driver/sqlserver"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
var opens = map[string]func(string) gorm.Dialector{
|
||||
"mysql": mysql.Open,
|
||||
"postgres": postgres.Open,
|
||||
"sqlite3": sqlite.Open,
|
||||
"sqlserver": sqlserver.Open,
|
||||
}
|
||||
Reference in New Issue
Block a user