initialize.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package database
  2. import (
  3. "IotAdmin/common/global"
  4. log "IotAdmin/core/logger"
  5. "IotAdmin/core/sdk"
  6. toolsCfg "IotAdmin/core/sdk/config"
  7. "IotAdmin/core/sdk/pkg"
  8. mycasbin "IotAdmin/core/sdk/pkg/casbin"
  9. toolsDB "IotAdmin/core/tools/database"
  10. toolsLogger "IotAdmin/core/tools/gorm/logger"
  11. "time"
  12. "gorm.io/gorm"
  13. "gorm.io/gorm/logger"
  14. "gorm.io/gorm/schema"
  15. )
  16. func Setup() {
  17. for k := range toolsCfg.DatabasesConfig {
  18. db := toolsCfg.DatabasesConfig[k]
  19. setupDatabase(k, db)
  20. }
  21. }
  22. func setupDatabase(host string, c *toolsCfg.Database) {
  23. if global.Driver == "" {
  24. global.Driver = c.Driver
  25. }
  26. log.Infof("%s => %s", host, pkg.Green(c.Source))
  27. registers := make([]toolsDB.ResolverConfigure, len(c.Registers))
  28. for i := range c.Registers {
  29. registers[i] = toolsDB.NewResolverConfigure(
  30. c.Registers[i].Sources,
  31. c.Registers[i].Replicas,
  32. c.Registers[i].Policy,
  33. c.Registers[i].Tables)
  34. }
  35. resolverConfig := toolsDB.NewConfigure(c.Source, c.MaxIdleConns, c.MaxOpenConns, c.ConnMaxIdleTime, c.ConnMaxLifeTime, registers)
  36. db, err := resolverConfig.Init(&gorm.Config{
  37. NamingStrategy: schema.NamingStrategy{
  38. SingularTable: true,
  39. },
  40. Logger: toolsLogger.New(
  41. logger.Config{
  42. SlowThreshold: time.Second,
  43. Colorful: true,
  44. LogLevel: logger.LogLevel(
  45. log.DefaultLogger.Options().Level.LevelForGorm()),
  46. },
  47. ),
  48. }, opens[c.Driver])
  49. if err != nil {
  50. log.Fatal(pkg.Red(c.Driver+" 连接失败 :"), err)
  51. } else {
  52. log.Info(pkg.Green(c.Driver + " 连接成功!"))
  53. }
  54. e := mycasbin.Setup(db, "")
  55. sdk.Runtime.SetDb(host, db)
  56. sdk.Runtime.SetCasbin(host, e)
  57. }