# README
pgx-migrator
Simple pgx oriented PostgreSQL schema migration library for Go based on lopezator/migrator.
Features
- Simple code
- Usage as a library, embeddable and extensible on your behalf
- Made to use with
jackc/pgx
- Go code migrations, either transactional or transaction-less, using
pgx.Tx
(migrator.Migration
) orpgx.Conn
andpgx.Pool
(migrator.MigrationNoTx
) - No need to use
//go:embed
or others, since all migrations are just Go code
Usage
Customize this to your needs by changing the driver and/or connection settings.
QuickStart:
package main
import (
pgx "github.com/jackc/pgx/v5"
migrator "github.com/cybertec-postgresql/pgx-migrator"
)
func main() {
// Configure migrations
m, err := migrator.New(
migrator.Migrations(
&migrator.Migration{
Name: "Create table foo",
Func: func(ctx context.Context, tx pgx.Tx) error {
_, err := tx.Exec(ctx, "CREATE TABLE foo (id INT PRIMARY KEY)")
return err
},
},
),
)
if err != nil {
panic(err)
}
// Open database connection
conn, err := pgx.Connect(context.Background(), os.Getenv("DATABASE_URL"))
if err != nil {
panic(err)
}
// Migrate up
if err := m.Migrate(conn); err != nil {
panic(err)
}
}
# Functions
Migrations creates an option with provided migrations.
New creates a new migrator instance.
SetNotice overrides the default standard output function.
TableName creates an option to allow overriding the default table name.
# Structs
Migration represents a single migration.
MigrationNoTx represents a single not transactional migration.
Migrator is the migrator implementation.
# Interfaces
PgxIface is interface for database connection or transaction.
# Type aliases
Option sets options such migrations or table name.