db_connector.go 890 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package database
  2. import (
  3. dbConfig "eta_mini_ht_api/common/component/config"
  4. "eta_mini_ht_api/common/component/database/dialector"
  5. logger "eta_mini_ht_api/common/component/log"
  6. "eta_mini_ht_api/common/contants"
  7. "gorm.io/gorm"
  8. "sync"
  9. )
  10. var (
  11. db *gorm.DB
  12. dbOnce sync.Once
  13. )
  14. func GetInstance() *gorm.DB {
  15. return db
  16. }
  17. func init() {
  18. if db == nil {
  19. dbOnce.Do(func() {
  20. config, ok := dbConfig.GetConfig(contants.DATABASE).(*dbConfig.DBConfig)
  21. if !ok {
  22. panic("初始化数据库失败,配置文件格式不正确")
  23. }
  24. driver := config.GetString("driver")
  25. dns := config.GetString("url")
  26. open, err := gorm.Open(dialector.GetGormDial(driver).GetDial(dns), &gorm.Config{})
  27. if err != nil {
  28. logger.Error("初始化数据库失败:%v", err.Error())
  29. panic("初始化数据库失败")
  30. }
  31. db = open
  32. logger.Info("初始化数据库成功")
  33. })
  34. }
  35. }