db.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. package boots
  2. import (
  3. "fmt"
  4. "go-nc/configs/global"
  5. "go-nc/hook"
  6. "go.uber.org/zap"
  7. "gorm.io/driver/mysql"
  8. "gorm.io/gorm"
  9. )
  10. // 初始化数据库连接
  11. func InitDB() *gorm.DB {
  12. logger := InitLogger()
  13. // 连接数据库配置
  14. dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=%t&loc=%s",
  15. global.App.Config.Database.Mysql.UserName,
  16. global.App.Config.Database.Mysql.Password,
  17. global.App.Config.Database.Mysql.Host,
  18. global.App.Config.Database.Mysql.Port,
  19. global.App.Config.Database.Mysql.Database,
  20. global.App.Config.Database.Mysql.Charset,
  21. global.App.Config.Database.Mysql.ParseTime,
  22. global.App.Config.Database.Mysql.Loc,
  23. )
  24. // 连接数据库
  25. db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
  26. Logger: &hook.CustomLogger{
  27. Logger: logger,
  28. },
  29. })
  30. if err != nil {
  31. logger.Error("mysql:连接失败", zap.Error(err))
  32. return nil
  33. }
  34. // 设置连接池参数
  35. sqlDB, err := db.DB()
  36. if err != nil {
  37. logger.Error("mysql:连接失败", zap.Error(err))
  38. return nil
  39. } else {
  40. // 链接成功打印日志
  41. logger.Info("mysql:连接成功")
  42. }
  43. sqlDB.SetMaxIdleConns(global.App.Config.Database.Mysql.MaxIdleConns) // 设置最大空闲连接数
  44. sqlDB.SetMaxOpenConns(global.App.Config.Database.Mysql.MaxOpenConns) // 设置最大连接数
  45. sqlDB.SetConnMaxLifetime(0) // 设置了连接可复用的最大时间
  46. // 将数据库实例赋值给全局变量
  47. return db
  48. }
  49. // 初始化 StarRocks 数据库
  50. func InitStarRocksDB() *gorm.DB {
  51. logger := InitLogger()
  52. // 连接 StarRocks 数据库配置
  53. starRocksDsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s",
  54. global.App.Config.Database.StarRocks.UserName,
  55. global.App.Config.Database.StarRocks.Password,
  56. global.App.Config.Database.StarRocks.Host,
  57. global.App.Config.Database.StarRocks.Port,
  58. global.App.Config.Database.StarRocks.Database,
  59. )
  60. // 连接 StarRocks 数据库
  61. starRocksDB, err := gorm.Open(mysql.Open(starRocksDsn), &gorm.Config{
  62. Logger: &hook.CustomLogger{
  63. Logger: logger,
  64. },
  65. })
  66. if err != nil {
  67. logger.Error("starRocks:连接失败", zap.Error(err))
  68. return nil
  69. }
  70. // 设置连接池参数
  71. starRocksSqlDB, err := starRocksDB.DB()
  72. if err != nil {
  73. logger.Error("starRocks:连接失败", zap.Error(err))
  74. return nil
  75. } else {
  76. // 链接成功打印日志
  77. logger.Info("starRocks:连接成功")
  78. }
  79. starRocksSqlDB.SetMaxIdleConns(global.App.Config.Database.StarRocks.MaxIdleConns) // 设置最大空闲连接数
  80. starRocksSqlDB.SetMaxOpenConns(global.App.Config.Database.StarRocks.MaxOpenConns) // 设置最大连接数
  81. starRocksSqlDB.SetConnMaxLifetime(0) // 设置了连接可复用的最大时间
  82. // 将数据库实例赋值给全局变量
  83. return starRocksDB
  84. }