package db import ( "context" "database/sql" "fmt" _ "github.com/go-sql-driver/mysql" ) func Open(dsn string) (*sql.DB, error) { db, err := sql.Open("mysql", dsn) if err != nil { return nil, fmt.Errorf("open db: %w", err) } if err := db.Ping(); err != nil { return nil, fmt.Errorf("ping db: %w", err) } return db, nil } func Migrate(ctx context.Context, db *sql.DB) error { for _, stmt := range statements { if _, err := db.ExecContext(ctx, stmt); err != nil { return fmt.Errorf("migrate: %w", err) } } return nil }