package database import ( 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" "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 } // Never log the DSN: MySQL/PostgreSQL/SQL Server sources commonly contain // credentials. Driver and logical host are sufficient for diagnostics. log.Infof("database %s => driver=%s", host, pkg.Green(c.Driver)) 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, }, // SQL values can contain install IDs and other device/task data. Keep // database statements out of application logs; handlers log safe codes. Logger: logger.Default.LogMode(logger.Silent), }, 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) }