Ei kuvausta
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

db_bootstrapper.go 2.6KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. package dbstart
  2. // import (
  3. // "log"
  4. // "git.x2erp.com/qdy/go-base/config"
  5. // "git.x2erp.com/qdy/go-base/logger"
  6. // "git.x2erp.com/qdy/go-db/factory/database"
  7. // )
  8. // // DBBootstrapper 数据库启动器
  9. // type DBBootstrapper struct {
  10. // DBFactories map[string]*database.DBFactory // 改为map存储多个数据库实例
  11. // cfg config.IConfig
  12. // }
  13. // // NewDBBootstrapper 创建数据库启动器
  14. // func NewDBBootstrapper(cfg config.IConfig) *DBBootstrapper {
  15. // return &DBBootstrapper{
  16. // DBFactories: make(map[string]*database.DBFactory),
  17. // cfg: cfg,
  18. // }
  19. // }
  20. // // Init 初始化默认数据库
  21. // func (db *DBBootstrapper) Init() *DBBootstrapper {
  22. // if db.cfg == nil {
  23. // log.Fatal("配置未初始化,请先传入配置")
  24. // }
  25. // // // 初始化默认数据库
  26. // // dbCfg := db.cfg.GetDatabaseConfig()
  27. // // if dbCfg == nil {
  28. // // log.Fatal("默认数据库配置未找到")
  29. // // }
  30. // // log.Printf("正在连接默认数据库: %s:%d/%s",
  31. // // dbCfg.Host, dbCfg.Port, dbCfg.Database)
  32. // dbFactory, err := database.GetDefaultDBFactory()
  33. // if err != nil {
  34. // log.Fatalf("默认数据库连接失败: %v", err)
  35. // }
  36. // db.DBFactories["default"] = dbFactory
  37. // log.Println("默认数据库连接成功")
  38. // return db
  39. // }
  40. // // GetDBFactory 获取数据库工厂
  41. // func (db *DBBootstrapper) GetDBFactory(dbName string) *database.DBFactory {
  42. // // 如果已经初始化,直接返回
  43. // if factory, exists := db.DBFactories[dbName]; exists {
  44. // return factory
  45. // }
  46. // // 如果还没初始化,按需初始化
  47. // dbFactory, err := database.GetDBFactory(dbName)
  48. // if err != nil {
  49. // log.Printf("❌ 获取数据库 '%s' 失败: %v", dbName, err)
  50. // return nil
  51. // }
  52. // db.DBFactories[dbName] = dbFactory
  53. // return dbFactory
  54. // }
  55. // // GetDefaultDBFactory 获取默认数据库工厂
  56. // func (db *DBBootstrapper) GetDefaultDBFactory() *database.DBFactory {
  57. // return db.GetDBFactory("default")
  58. // }
  59. // // Close 关闭所有数据库连接
  60. // func (db *DBBootstrapper) Close() {
  61. // for name, factory := range db.DBFactories {
  62. // logger.Info("正在关闭数据库: %s, factory: %v", name, factory)
  63. // if factory != nil {
  64. // factory.Close()
  65. // logger.Info("数据库 '%s' 连接已关闭", name)
  66. // } else {
  67. // logger.Error("⚠️ 警告: 数据库 '%s' 的 factory 为 nil", name)
  68. // }
  69. // }
  70. // // 清空map
  71. // db.DBFactories = make(map[string]*database.DBFactory)
  72. // logger.Info("所有数据库连接已关闭.")
  73. // }
  74. // // 在 dbstart 包中
  75. // func (db *DBBootstrapper) OnShutdown() {
  76. // db.Close()
  77. // }