initialize.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. package initialize
  2. import (
  3. "fmt"
  4. log "github.com/sirupsen/logrus"
  5. logrus "github.com/sirupsen/logrus"
  6. "gorm.io/driver/mysql"
  7. "gorm.io/gorm"
  8. "standard/cobra/internal/pkg/configs"
  9. "standard/cobra/internal/pkg/db"
  10. logs "standard/cobra/internal/pkg/logger"
  11. "time"
  12. )
  13. /*
  14. /internal/pkg/initialize
  15. 该package用于各种数据库、中间件连接的初始化
  16. */
  17. //初始化mysql
  18. func InitDBRepo(cfg *configs.Config, logger *log.Logger) (*db.MysqlRepo, error) {
  19. //1.创建Gorm的logger
  20. gormLogger := logs.NewGormLogger(logger)
  21. //2.根据配置文件进行连接格式化
  22. dsn := fmt.Sprintf(
  23. "%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local",
  24. cfg.Mysql.Username,
  25. cfg.Mysql.Password,
  26. cfg.Mysql.Host,
  27. cfg.Mysql.Port,
  28. cfg.Mysql.Database)
  29. //3.获取数据库连接
  30. mysqlDB, err := gorm.Open(mysql.Open(dsn), &gorm.Config{Logger: gormLogger})
  31. if err != nil {
  32. return nil, err
  33. }
  34. sqlDB, err := mysqlDB.DB()
  35. if err != nil {
  36. return nil, err
  37. }
  38. // SetMaxIdleConns 设置空闲连接池中连接的最大数量
  39. sqlDB.SetMaxIdleConns(10)
  40. // SetMaxOpenConns 设置打开数据库连接的最大数量
  41. sqlDB.SetMaxOpenConns(100)
  42. // SetConnMaxLifetime 设置了连接可复用的最大时间
  43. sqlDB.SetConnMaxLifetime(time.Hour)
  44. return db.NewMysqlRepo(mysqlDB), nil
  45. }
  46. func newMysqlDB(dsn string) (*gorm.DB, error) {
  47. return gorm.Open(mysql.Open(dsn), &gorm.Config{})
  48. }
  49. //日志实例初始化
  50. func Logger(logger *log.Logger,config *configs.Config ) *log.Logger {
  51. //if config.App.Env == "prod" {
  52. // log.SetFormatter(&log.JSONFormatter{})
  53. //}
  54. switch config.App.LogLevel {
  55. case "debug":
  56. logrus.SetLevel(log.DebugLevel)
  57. case "error":
  58. logrus.SetLevel(log.ErrorLevel)
  59. case "warn":
  60. logrus.SetLevel(log.WarnLevel)
  61. default:
  62. logrus.SetLevel(log.InfoLevel)
  63. }
  64. return logrus.StandardLogger()
  65. }
  66. //self
  67. //func InitMysql(config *configs.Config)(*gorm.DB, error){
  68. // dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=%s&parseTime=True&loc=Local",
  69. // config.Mysql.Username,
  70. // config.Mysql.Password,
  71. // config.Mysql.Host,
  72. // config.Mysql.Port,
  73. // config.Mysql.Database,
  74. // config.Mysql.Charset)
  75. //
  76. // db, err := newMysqlDB(dsn)
  77. // if err != nil {
  78. // return nil,err
  79. // }
  80. // return db,nil
  81. //}
  82. //func InitRedisClient(config *configs.Config) *redis.Client {
  83. // return redis.NewClient(&redis.Options{
  84. // Addr: config.Redis.Host, // use default Addr
  85. // Password: config.Redis.Password, // no password set
  86. // DB: int(config.Redis.Db), // use default DB
  87. // })
  88. //}