package database import ( "IotAdmin/common/global" log "IotAdmin/core/logger" "IotAdmin/core/sdk" toolsCfg "IotAdmin/core/sdk/config" "IotAdmin/core/sdk/pkg" mycasbin "IotAdmin/core/sdk/pkg/casbin" toolsDB "IotAdmin/core/tools/database" toolsLogger "IotAdmin/core/tools/gorm/logger" "time" "gorm.io/gorm" "gorm.io/gorm/logger" "gorm.io/gorm/schema" ) func Setup() { for k := range toolsCfg.DatabasesConfig { db := toolsCfg.DatabasesConfig[k] setupDatabase(k, db) } } func setupDatabase(host string, c *toolsCfg.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: toolsLogger.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+" 连接失败 :"), err) } else { log.Info(pkg.Green(c.Driver + " 连接成功!")) } e := mycasbin.Setup(db, "") sdk.Runtime.SetDb(host, db) sdk.Runtime.SetCasbin(host, e) }