package infrastructure import ( "fmt" "gogs.tyduyong.com/duyong/dy-pkg/app/options" "gorm.io/driver/mysql" "gorm.io/gorm" "gorm.io/gorm/logger" ) func InitMysql(opts *options.MySQLOptions) (*gorm.DB, error) { dsn := fmt.Sprintf(`%s:%s@tcp(%s)/%s?charset=utf8&parseTime=%t&loc=%s`, opts.Username, opts.Password, opts.Host, opts.Database, true, "Local") db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{ Logger: logger.Default.LogMode(logger.LogLevel(opts.LogLevel)), }) if err != nil { return nil, err } sqlDB, err := db.DB() if err != nil { return nil, err } sqlDB.SetMaxOpenConns(opts.MaxOpenConnections) sqlDB.SetConnMaxLifetime(opts.MaxConnectionLifeTime) sqlDB.SetMaxIdleConns(opts.MaxIdleConnections) return db, nil }