Categorygithub.com/cybertec-postgresql/pgx-migrator
modulepackage
1.0.2
Repository: https://github.com/cybertec-postgresql/pgx-migrator.git
Documentation: pkg.go.dev

# README

Go Reference Go Report Card Coverage Status

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) or pgx.Conn and pgx.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.