migrate

package
v1.109.3 Latest Latest
Warning

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

Go to latest
Published: Jul 30, 2024 License: AGPL-3.0 Imports: 11 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")
	// ErrValidateVersionMismatch is when the migration version does not match the current database version.
	ErrValidateVersionMismatch = errs.Class("validate db version mismatch")
	// ErrValidateMinVersion is when the migration version does not match the current database version.
	ErrValidateMinVersion = errs.Class("validate minimum version")
)
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.

Types

type Action

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

Action is something that needs to be done.

type CreateDB

type CreateDB func(ctx context.Context, log *zap.Logger) error

CreateDB is operation for creating new dbs.

type DBX

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

DBX contains additional methods for migrations.

type Func

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

Func is an arbitrary operation.

func (Func) Run

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

Run runs the migration.

type Migration

type Migration struct {
	// Table is the table name to register the applied migration version.
	// NOTE: Always validates its value with the ValidTableName method before it's
	// concatenated in a query string for avoiding SQL injection attacks.
	Table string
	Steps []*Step
}

Migration describes a migration steps.

func (*Migration) CurrentVersion

func (migration *Migration) CurrentVersion(ctx context.Context, log *zap.Logger, db tagsql.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 only formed by at least one character and its only formed by lowercase letters and underscores.

NOTE: if you change this function to accept a wider range of characters, make sure that they cannot open to SQL injections because Table field is used concatenated in some queries performed by Mitration methods.

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 tagsql.DB, tx tagsql.Tx) (err error)

Run runs the SQL statements.

type Step

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

	// SeparateTx marks a step as it should not be merged together for optimization.
	// Cockroach cannot add a column and update the value in the same transaction.
	SeparateTx bool
}

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