Files
ai-agent-scaffold-go/internal/infrastructure/persistence/mysql.go
2026-05-30 23:16:49 +08:00

36 lines
682 B
Go

package persistence
import (
"fmt"
"strings"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type MySQLConfig struct {
Required bool
DSN string
}
func OpenMySQL(config MySQLConfig) (*gorm.DB, error) {
if strings.TrimSpace(config.DSN) == "" {
if config.Required {
return nil, fmt.Errorf("mysql dsn is required")
}
return nil, nil
}
db, err := gorm.Open(mysql.Open(config.DSN), &gorm.Config{})
if err != nil {
return nil, fmt.Errorf("open mysql: %w", err)
}
sqlDB, err := db.DB()
if err != nil {
return nil, fmt.Errorf("mysql db handle: %w", err)
}
if err := sqlDB.Ping(); err != nil {
return nil, fmt.Errorf("ping mysql: %w", err)
}
return db, nil
}