package database import ( "database/sql" "fmt" "strings" "time" _ "github.com/go-sql-driver/mysql" ) var DB *sql.DB func Init(dsn string) error { // Add parseTime=true to handle DATETIME columns as time.Time if !strings.Contains(dsn, "parseTime=") { if strings.Contains(dsn, "?") { dsn += "&parseTime=true" } else { dsn += "?parseTime=true" } } var err error DB, err = sql.Open("mysql", dsn) if err != nil { return fmt.Errorf("failed to open database: %w", err) } DB.SetMaxOpenConns(25) DB.SetMaxIdleConns(5) DB.SetConnMaxLifetime(5 * time.Minute) if err = DB.Ping(); err != nil { return fmt.Errorf("failed to ping database: %w", err) } return nil } func Close() error { if DB != nil { return DB.Close() } return nil }