mysql.go 768 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. package infrastructure
  2. import (
  3. "fmt"
  4. "gogs.tyduyong.com/duyong/dy-pkg/app/options"
  5. "gorm.io/driver/mysql"
  6. "gorm.io/gorm"
  7. "gorm.io/gorm/logger"
  8. )
  9. func InitMysql(opts *options.MySQLOptions) (*gorm.DB, error) {
  10. dsn := fmt.Sprintf(`%s:%s@tcp(%s)/%s?charset=utf8&parseTime=%t&loc=%s`,
  11. opts.Username,
  12. opts.Password,
  13. opts.Host,
  14. opts.Database,
  15. true,
  16. "Local")
  17. db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
  18. Logger: logger.Default.LogMode(logger.LogLevel(opts.LogLevel)),
  19. })
  20. if err != nil {
  21. return nil, err
  22. }
  23. sqlDB, err := db.DB()
  24. if err != nil {
  25. return nil, err
  26. }
  27. sqlDB.SetMaxOpenConns(opts.MaxOpenConnections)
  28. sqlDB.SetConnMaxLifetime(opts.MaxConnectionLifeTime)
  29. sqlDB.SetMaxIdleConns(opts.MaxIdleConnections)
  30. return db, nil
  31. }