package db import ( "database/sql" "fmt" "time" _ "github.com/go-sql-driver/mysql" "query-database/api/internal/config" ) func OpenMySQL(cfg config.Config) (*sql.DB, error) { dsn := fmt.Sprintf("%s:%s@tcp(%s:%s)/?parseTime=true&multiStatements=true&charset=utf8mb4", cfg.MySQLUser, cfg.MySQLPassword, cfg.MySQLHost, cfg.MySQLPort) db, err := sql.Open("mysql", dsn) if err != nil { return nil, err } db.SetMaxOpenConns(10) db.SetConnMaxLifetime(5 * time.Minute) if err := db.Ping(); err != nil { return nil, err } return db, nil }