migrate

package
v0.30.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 16, 2020 License: AGPL-3.0 Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrValidateVersionQuery is when there is an error querying version table
	ErrValidateVersionQuery = errs.Class("validate db version query error")
	// ErrValidateVersionMismatch is when the migration version does not match the current database version
	ErrValidateVersionMismatch = errs.Class("validate db version mismatch error")
	// ErrValidateMinVersion is when the migration version does not match the current database version
	ErrValidateMinVersion = errs.Class("validate minimum version error")
)
View Source
var Error = errs.Class("migrate")

Error is the default migrate errs class

Functions

func Create

func Create(ctx context.Context, identifier string, db DBX) error

Create with a previous schema check

func WithTx added in v0.29.1

func WithTx(ctx context.Context, db DB, fn func(ctx context.Context, tx *sql.Tx) error) error

WithTx runs the given callback in the context of a transaction.

Types

type Action

type Action interface {
	Run(ctx context.Context, log *zap.Logger, db DB, tx *sql.Tx) error
}

Action is something that needs to be done

type DB

type DB interface {
	BeginTx(ctx context.Context, txOptions *sql.TxOptions) (*sql.Tx, error)
	Driver() driver.Driver
}

DB is the minimal implementation that is needed by migrations.

DB can optionally have `Rebind(string) string` for translating `? queries for the specific database.

type DBX

type DBX interface {
	DB
	Schema() string
	Rebind(string) string
}

DBX contains additional methods for migrations.

type Func

type Func func(ctx context.Context, log *zap.Logger, db DB, tx *sql.Tx) error

Func is an arbitrary operation

func (Func) Run

func (fn Func) Run(ctx context.Context, log *zap.Logger, db DB, tx *sql.Tx) error

Run runs the migration

type Migration

type Migration struct {
	Table string
	Steps []*Step
}

Migration describes a migration steps

func (*Migration) CurrentVersion added in v0.27.0

func (migration *Migration) CurrentVersion(ctx context.Context, log *zap.Logger, db DB) (int, error)

CurrentVersion finds the latest version for the db

func (*Migration) Run

func (migration *Migration) Run(ctx context.Context, log *zap.Logger) error

Run runs the migration steps

func (*Migration) TargetVersion

func (migration *Migration) TargetVersion(version int) *Migration

TargetVersion returns migration with steps upto specified version

func (*Migration) ValidTableName

func (migration *Migration) ValidTableName() error

ValidTableName checks whether the specified table name is valid

func (*Migration) ValidateSteps

func (migration *Migration) ValidateSteps() error

ValidateSteps checks that the version for each migration step increments in order

func (*Migration) ValidateVersions

func (migration *Migration) ValidateVersions(ctx context.Context, log *zap.Logger) error

ValidateVersions checks that the version of the migration matches the state of the database

type SQL

type SQL []string

SQL statements that are executed on the database

func (SQL) Run

func (sql SQL) Run(ctx context.Context, log *zap.Logger, db DB, tx *sql.Tx) (err error)

Run runs the SQL statements

type Step

type Step struct {
	DB          DB // The DB to execute this step on
	Description string
	Version     int // Versions should start at 0
	Action      Action
}

Step describes a single step in migration.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL