migrations

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: May 16, 2024 License: Apache-2.0 Imports: 16 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Backfill added in v0.6.0

func Backfill(ctx context.Context, conn db.DB, table *schema.Table, cbs ...CallbackFn) error

Backfill updates all rows in the given table, in batches, using the following algorithm: 1. Get the primary key column for the table. 2. Get the first batch of rows from the table, ordered by the primary key. 3. Update each row in the batch, setting the value of the primary key column to itself. 4. Repeat steps 2 and 3 until no more rows are returned.

func ColumnToSQL

func ColumnToSQL(col Column, tr SQLTransformer) (string, error)

func DuplicationName added in v0.5.0

func DuplicationName(name string) string

func IsDuplicatedName added in v0.5.0

func IsDuplicatedName(name string) bool

func IsNotNullConstraintName added in v0.5.0

func IsNotNullConstraintName(name string) bool

func NotNullConstraintName

func NotNullConstraintName(columnName string) string

func RenameDuplicatedColumn added in v0.5.0

func RenameDuplicatedColumn(ctx context.Context, conn db.DB, table *schema.Table, column *schema.Column) error

RenameDuplicatedColumn: * renames a duplicated column to its original name * renames any foreign keys on the duplicated column to their original name. * Validates and renames any temporary `CHECK` constraints on the duplicated column.

func StripDuplicationPrefix added in v0.5.0

func StripDuplicationPrefix(name string) string

func TemporaryName

func TemporaryName(name string) string

func TriggerFunctionName

func TriggerFunctionName(tableName, columnName string) string

func TriggerName

func TriggerName(tableName, columnName string) string

Types

type AlterColumnNoChangesError added in v0.6.0

type AlterColumnNoChangesError struct {
	Table  string
	Column string
}

func (AlterColumnNoChangesError) Error added in v0.6.0

type BackfillNotPossibleError added in v0.6.0

type BackfillNotPossibleError struct {
	Table string
}

func (BackfillNotPossibleError) Error added in v0.6.0

func (e BackfillNotPossibleError) Error() string

type CallbackFn added in v0.2.0

type CallbackFn func(int64)

type CheckConstraint

type CheckConstraint struct {
	// Constraint expression
	Constraint string `json:"constraint"`

	// Name of check constraint
	Name string `json:"name"`
}

Check constraint definition

func (*CheckConstraint) Validate

func (c *CheckConstraint) Validate() error

type CheckConstraintError

type CheckConstraintError struct {
	Table  string
	Column string
	Err    error
}

func (CheckConstraintError) Error

func (e CheckConstraintError) Error() string

func (CheckConstraintError) Unwrap

func (e CheckConstraintError) Unwrap() error

type Column

type Column struct {
	// Check constraint for the column
	Check *CheckConstraint `json:"check,omitempty"`

	// Postgres comment for the column
	Comment *string `json:"comment,omitempty"`

	// Default value for the column
	Default *string `json:"default,omitempty"`

	// Name of the column
	Name string `json:"name"`

	// Indicates if the column is nullable
	Nullable *bool `json:"nullable,omitempty"`

	// Indicates if the column is part of the primary key
	Pk *bool `json:"pk,omitempty"`

	// Foreign key constraint for the column
	References *ForeignKeyReference `json:"references,omitempty"`

	// Postgres type of the column
	Type string `json:"type"`

	// Indicates if the column values must be unique
	Unique *bool `json:"unique,omitempty"`
}

Column definition

func (*Column) IsNullable added in v0.5.0

func (c *Column) IsNullable() bool

func (*Column) IsPrimaryKey added in v0.5.0

func (c *Column) IsPrimaryKey() bool

func (*Column) IsUnique added in v0.5.0

func (c *Column) IsUnique() bool

type ColumnAlreadyExistsError

type ColumnAlreadyExistsError struct {
	Table string
	Name  string
}

func (ColumnAlreadyExistsError) Error

func (e ColumnAlreadyExistsError) Error() string

type ColumnDoesNotExistError

type ColumnDoesNotExistError struct {
	Table string
	Name  string
}

func (ColumnDoesNotExistError) Error

func (e ColumnDoesNotExistError) Error() string

type ColumnIsNotNullableError

type ColumnIsNotNullableError struct {
	Table string
	Name  string
}

func (ColumnIsNotNullableError) Error

func (e ColumnIsNotNullableError) Error() string

type ColumnIsNullableError added in v0.5.0

type ColumnIsNullableError struct {
	Table string
	Name  string
}

func (ColumnIsNullableError) Error added in v0.5.0

func (e ColumnIsNullableError) Error() string

type ColumnReferenceError

type ColumnReferenceError struct {
	Table  string
	Column string
	Err    error
}

func (ColumnReferenceError) Error

func (e ColumnReferenceError) Error() string

func (ColumnReferenceError) Unwrap

func (e ColumnReferenceError) Unwrap() error

type ConstraintAlreadyExistsError added in v0.6.0

type ConstraintAlreadyExistsError struct {
	Table      string
	Constraint string
}

func (ConstraintAlreadyExistsError) Error added in v0.6.0

type ConstraintDoesNotExistError added in v0.5.0

type ConstraintDoesNotExistError struct {
	Table      string
	Constraint string
}

func (ConstraintDoesNotExistError) Error added in v0.5.0

type Duplicator added in v0.5.0

type Duplicator struct {
	// contains filtered or unexported fields
}

func NewColumnDuplicator added in v0.5.0

func NewColumnDuplicator(conn db.DB, table *schema.Table, column *schema.Column) *Duplicator

NewColumnDuplicator creates a new Duplicator for a column.

func (*Duplicator) Duplicate added in v0.5.0

func (d *Duplicator) Duplicate(ctx context.Context) error

Duplicate duplicates a column in the table, including all constraints and comments.

func (*Duplicator) WithType added in v0.5.0

func (d *Duplicator) WithType(t string) *Duplicator

func (*Duplicator) WithoutConstraint added in v0.5.0

func (d *Duplicator) WithoutConstraint(c string) *Duplicator

func (*Duplicator) WithoutNotNull added in v0.5.0

func (d *Duplicator) WithoutNotNull() *Duplicator

type EmptyMigrationError

type EmptyMigrationError struct{}

func (EmptyMigrationError) Error

func (e EmptyMigrationError) Error() string

type FieldRequiredError

type FieldRequiredError struct {
	Name string
}

func (FieldRequiredError) Error

func (e FieldRequiredError) Error() string

type ForeignKeyReference

type ForeignKeyReference struct {
	// Name of the referenced column
	Column string `json:"column"`

	// Name of the foreign key constraint
	Name string `json:"name"`

	// On delete behavior of the foreign key constraint
	OnDelete ForeignKeyReferenceOnDelete `json:"on_delete,omitempty"`

	// Name of the referenced table
	Table string `json:"table"`
}

Foreign key reference definition

func (*ForeignKeyReference) Validate

func (f *ForeignKeyReference) Validate(s *schema.Schema) error

type ForeignKeyReferenceOnDelete added in v0.6.0

type ForeignKeyReferenceOnDelete string
const ForeignKeyReferenceOnDeleteCASCADE ForeignKeyReferenceOnDelete = "CASCADE"
const ForeignKeyReferenceOnDeleteNOACTION ForeignKeyReferenceOnDelete = "NO ACTION"
const ForeignKeyReferenceOnDeleteRESTRICT ForeignKeyReferenceOnDelete = "RESTRICT"
const ForeignKeyReferenceOnDeleteSETDEFAULT ForeignKeyReferenceOnDelete = "SET DEFAULT"
const ForeignKeyReferenceOnDeleteSETNULL ForeignKeyReferenceOnDelete = "SET NULL"

type IndexAlreadyExistsError

type IndexAlreadyExistsError struct {
	Name string
}

func (IndexAlreadyExistsError) Error

func (e IndexAlreadyExistsError) Error() string

type IndexDoesNotExistError

type IndexDoesNotExistError struct {
	Name string
}

func (IndexDoesNotExistError) Error

func (e IndexDoesNotExistError) Error() string

type InvalidMigrationError

type InvalidMigrationError struct {
	Reason string
}

func (InvalidMigrationError) Error

func (e InvalidMigrationError) Error() string

type InvalidOnDeleteSettingError added in v0.6.0

type InvalidOnDeleteSettingError struct {
	Name    string
	Setting string
}

func (InvalidOnDeleteSettingError) Error added in v0.6.0

type InvalidReplicaIdentityError added in v0.4.0

type InvalidReplicaIdentityError struct {
	Table    string
	Identity string
}

func (InvalidReplicaIdentityError) Error added in v0.4.0

type IsolatedOperation

type IsolatedOperation interface {
	// this operation is isolated when executed on start, cannot be executed with other operations
	IsIsolated() bool
}

IsolatedOperation is an operation that cannot be executed with other operations in the same migration

type Migration

type Migration struct {
	Name string `json:"name"`

	Operations Operations `json:"operations"`
}

func ReadMigration added in v0.3.0

func ReadMigration(r io.Reader) (*Migration, error)

func (*Migration) Validate

func (m *Migration) Validate(ctx context.Context, s *schema.Schema) error

Validate will check that the migration can be applied to the given schema returns a descriptive error if the migration is invalid

type NoDownSQLAllowedError

type NoDownSQLAllowedError struct{}

func (NoDownSQLAllowedError) Error

func (e NoDownSQLAllowedError) Error() string

type NoUpSQLAllowedError

type NoUpSQLAllowedError struct{}

func (NoUpSQLAllowedError) Error

func (e NoUpSQLAllowedError) Error() string

type OpAddColumn

type OpAddColumn struct {
	// Column to add
	Column Column `json:"column"`

	// Name of the table
	Table string `json:"table"`

	// SQL expression for up migration
	Up string `json:"up,omitempty"`
}

Add column operation

func (*OpAddColumn) Complete

func (o *OpAddColumn) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpAddColumn) Rollback

func (o *OpAddColumn) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpAddColumn) Start

func (o *OpAddColumn) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpAddColumn) Validate

func (o *OpAddColumn) Validate(ctx context.Context, s *schema.Schema) error

type OpAlterColumn

type OpAlterColumn struct {
	// Add check constraint to the column
	Check *CheckConstraint `json:"check,omitempty"`

	// Name of the column
	Column string `json:"column"`

	// New comment on the column
	Comment nullable.Nullable[string] `json:"comment,omitempty"`

	// Default value of the column
	Default *string `json:"default,omitempty"`

	// SQL expression for down migration
	Down string `json:"down,omitempty"`

	// New name of the column (for rename column operation)
	Name *string `json:"name,omitempty"`

	// Indicates if the column is nullable (for add/remove not null constraint
	// operation)
	Nullable *bool `json:"nullable,omitempty"`

	// Add foreign key constraint to the column
	References *ForeignKeyReference `json:"references,omitempty"`

	// Name of the table
	Table string `json:"table"`

	// New type of the column (for change type operation)
	Type *string `json:"type,omitempty"`

	// Add unique constraint to the column
	Unique *UniqueConstraint `json:"unique,omitempty"`

	// SQL expression for up migration
	Up string `json:"up,omitempty"`
}

Alter column operation

func (*OpAlterColumn) Complete

func (o *OpAlterColumn) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpAlterColumn) Rollback

func (o *OpAlterColumn) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpAlterColumn) Start

func (o *OpAlterColumn) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpAlterColumn) Validate

func (o *OpAlterColumn) Validate(ctx context.Context, s *schema.Schema) error

type OpChangeType

type OpChangeType struct {
	Table  string `json:"table"`
	Column string `json:"column"`
	Type   string `json:"type"`
	Up     string `json:"up"`
	Down   string `json:"down"`
}

func (*OpChangeType) Complete

func (o *OpChangeType) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpChangeType) Rollback

func (o *OpChangeType) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpChangeType) Start

func (o *OpChangeType) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpChangeType) Validate

func (o *OpChangeType) Validate(ctx context.Context, s *schema.Schema) error

type OpCreateIndex

type OpCreateIndex struct {
	// Names of columns on which to define the index
	Columns []string `json:"columns"`

	// Index name
	Name string `json:"name"`

	// Name of table on which to define the index
	Table string `json:"table"`
}

Create index operation

func (*OpCreateIndex) Complete

func (o *OpCreateIndex) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpCreateIndex) Rollback

func (o *OpCreateIndex) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpCreateIndex) Start

func (o *OpCreateIndex) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpCreateIndex) Validate

func (o *OpCreateIndex) Validate(ctx context.Context, s *schema.Schema) error

type OpCreateTable

type OpCreateTable struct {
	// Columns corresponds to the JSON schema field "columns".
	Columns []Column `json:"columns"`

	// Postgres comment for the table
	Comment *string `json:"comment,omitempty"`

	// Name of the table
	Name string `json:"name"`
}

Create table operation

func (*OpCreateTable) Complete

func (o *OpCreateTable) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpCreateTable) Rollback

func (o *OpCreateTable) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpCreateTable) Start

func (o *OpCreateTable) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpCreateTable) Validate

func (o *OpCreateTable) Validate(ctx context.Context, s *schema.Schema) error

type OpDropColumn

type OpDropColumn struct {
	// Name of the column
	Column string `json:"column"`

	// SQL expression for down migration
	Down string `json:"down,omitempty"`

	// Name of the table
	Table string `json:"table"`
}

Drop column operation

func (*OpDropColumn) Complete

func (o *OpDropColumn) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpDropColumn) Rollback

func (o *OpDropColumn) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpDropColumn) Start

func (o *OpDropColumn) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpDropColumn) Validate

func (o *OpDropColumn) Validate(ctx context.Context, s *schema.Schema) error

type OpDropConstraint

type OpDropConstraint struct {
	// Name of the column
	Column string `json:"column"`

	// SQL expression for down migration
	Down string `json:"down"`

	// Name of the constraint
	Name string `json:"name"`

	// Name of the table
	Table string `json:"table"`

	// SQL expression for up migration
	Up string `json:"up"`
}

Drop constraint operation

func (*OpDropConstraint) Complete

func (o *OpDropConstraint) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpDropConstraint) Rollback

func (o *OpDropConstraint) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpDropConstraint) Start

func (o *OpDropConstraint) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpDropConstraint) Validate

func (o *OpDropConstraint) Validate(ctx context.Context, s *schema.Schema) error

type OpDropIndex

type OpDropIndex struct {
	// Index name
	Name string `json:"name"`
}

Drop index operation

func (*OpDropIndex) Complete

func (o *OpDropIndex) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpDropIndex) Rollback

func (o *OpDropIndex) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpDropIndex) Start

func (o *OpDropIndex) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpDropIndex) Validate

func (o *OpDropIndex) Validate(ctx context.Context, s *schema.Schema) error

type OpDropNotNull added in v0.5.0

type OpDropNotNull struct {
	Table  string `json:"table"`
	Column string `json:"column"`
	Up     string `json:"up"`
	Down   string `json:"down"`
}

func (*OpDropNotNull) Complete added in v0.5.0

func (o *OpDropNotNull) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpDropNotNull) Rollback added in v0.5.0

func (o *OpDropNotNull) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpDropNotNull) Start added in v0.5.0

func (o *OpDropNotNull) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpDropNotNull) Validate added in v0.5.0

func (o *OpDropNotNull) Validate(ctx context.Context, s *schema.Schema) error

type OpDropTable

type OpDropTable struct {
	// Name of the table
	Name string `json:"name"`
}

Drop table operation

func (*OpDropTable) Complete

func (o *OpDropTable) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpDropTable) Rollback

func (o *OpDropTable) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpDropTable) Start

func (o *OpDropTable) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpDropTable) Validate

func (o *OpDropTable) Validate(ctx context.Context, s *schema.Schema) error

type OpName

type OpName string
const (
	OpNameCreateTable        OpName = "create_table"
	OpNameRenameTable        OpName = "rename_table"
	OpNameDropTable          OpName = "drop_table"
	OpNameAddColumn          OpName = "add_column"
	OpNameDropColumn         OpName = "drop_column"
	OpNameAlterColumn        OpName = "alter_column"
	OpNameCreateIndex        OpName = "create_index"
	OpNameDropIndex          OpName = "drop_index"
	OpNameRenameConstraint   OpName = "rename_constraint"
	OpNameDropConstraint     OpName = "drop_constraint"
	OpNameSetReplicaIdentity OpName = "set_replica_identity"
	OpRawSQLName             OpName = "sql"

	// Internal operation types used by `alter_column`
	OpNameRenameColumn       OpName = "rename_column"
	OpNameSetUnique          OpName = "set_unique"
	OpNameSetNotNull         OpName = "set_not_null"
	OpNameSetForeignKey      OpName = "set_foreign_key"
	OpNameSetCheckConstraint OpName = "set_check_constraint"
	OpNameChangeType         OpName = "change_type"
)

func OperationName

func OperationName(op Operation) OpName

type OpRawSQL

type OpRawSQL struct {
	// SQL expression for down migration
	Down string `json:"down,omitempty"`

	// SQL expression will run on complete step (rather than on start)
	OnComplete bool `json:"onComplete,omitempty"`

	// SQL expression for up migration
	Up string `json:"up"`
}

Raw SQL operation

func (*OpRawSQL) Complete

func (o *OpRawSQL) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpRawSQL) IsIsolated

func (o *OpRawSQL) IsIsolated() bool

func (*OpRawSQL) RequiresSchemaRefresh

func (o *OpRawSQL) RequiresSchemaRefresh()

func (*OpRawSQL) Rollback

func (o *OpRawSQL) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpRawSQL) Start

func (o *OpRawSQL) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpRawSQL) Validate

func (o *OpRawSQL) Validate(ctx context.Context, s *schema.Schema) error

type OpRenameConstraint added in v0.6.0

type OpRenameConstraint struct {
	// Name of the constraint
	From string `json:"from"`

	// Name of the table
	Table string `json:"table"`

	// New name of the constraint
	To string `json:"to"`
}

Rename constraint operation

func (*OpRenameConstraint) Complete added in v0.6.0

func (o *OpRenameConstraint) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpRenameConstraint) Rollback added in v0.6.0

func (o *OpRenameConstraint) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpRenameConstraint) Start added in v0.6.0

func (o *OpRenameConstraint) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpRenameConstraint) Validate added in v0.6.0

func (o *OpRenameConstraint) Validate(ctx context.Context, s *schema.Schema) error

type OpRenameTable

type OpRenameTable struct {
	// Old name of the table
	From string `json:"from"`

	// New name of the table
	To string `json:"to"`
}

Rename table operation

func (*OpRenameTable) Complete

func (o *OpRenameTable) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpRenameTable) Rollback

func (o *OpRenameTable) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpRenameTable) Start

func (o *OpRenameTable) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpRenameTable) Validate

func (o *OpRenameTable) Validate(ctx context.Context, s *schema.Schema) error

type OpSetCheckConstraint

type OpSetCheckConstraint struct {
	Table  string          `json:"table"`
	Column string          `json:"column"`
	Check  CheckConstraint `json:"check"`
	Up     string          `json:"up"`
	Down   string          `json:"down"`
}

func (*OpSetCheckConstraint) Complete

func (o *OpSetCheckConstraint) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpSetCheckConstraint) Rollback

func (o *OpSetCheckConstraint) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpSetCheckConstraint) Start

func (o *OpSetCheckConstraint) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpSetCheckConstraint) Validate

func (o *OpSetCheckConstraint) Validate(ctx context.Context, s *schema.Schema) error

type OpSetComment added in v0.6.0

type OpSetComment struct {
	Table   string  `json:"table"`
	Column  string  `json:"column"`
	Comment *string `json:"comment"`
	Up      string  `json:"up"`
	Down    string  `json:"down"`
}

func (*OpSetComment) Complete added in v0.6.0

func (o *OpSetComment) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpSetComment) Rollback added in v0.6.0

func (o *OpSetComment) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpSetComment) Start added in v0.6.0

func (o *OpSetComment) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpSetComment) Validate added in v0.6.0

func (o *OpSetComment) Validate(ctx context.Context, s *schema.Schema) error

type OpSetDefault added in v0.6.0

type OpSetDefault struct {
	Table   string `json:"table"`
	Column  string `json:"column"`
	Default string `json:"default"`
	Up      string `json:"up"`
	Down    string `json:"down"`
}

func (*OpSetDefault) Complete added in v0.6.0

func (o *OpSetDefault) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpSetDefault) Rollback added in v0.6.0

func (o *OpSetDefault) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpSetDefault) Start added in v0.6.0

func (o *OpSetDefault) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpSetDefault) Validate added in v0.6.0

func (o *OpSetDefault) Validate(ctx context.Context, s *schema.Schema) error

type OpSetForeignKey

type OpSetForeignKey struct {
	Table      string              `json:"table"`
	Column     string              `json:"column"`
	References ForeignKeyReference `json:"references"`
	Up         string              `json:"up"`
	Down       string              `json:"down"`
}

func (*OpSetForeignKey) Complete

func (o *OpSetForeignKey) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpSetForeignKey) Rollback

func (o *OpSetForeignKey) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpSetForeignKey) Start

func (o *OpSetForeignKey) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpSetForeignKey) Validate

func (o *OpSetForeignKey) Validate(ctx context.Context, s *schema.Schema) error

type OpSetNotNull

type OpSetNotNull struct {
	Table  string `json:"table"`
	Column string `json:"column"`
	Up     string `json:"up"`
	Down   string `json:"down"`
}

func (*OpSetNotNull) Complete

func (o *OpSetNotNull) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpSetNotNull) Rollback

func (o *OpSetNotNull) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpSetNotNull) Start

func (o *OpSetNotNull) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpSetNotNull) Validate

func (o *OpSetNotNull) Validate(ctx context.Context, s *schema.Schema) error

type OpSetReplicaIdentity added in v0.4.0

type OpSetReplicaIdentity struct {
	// Replica identity to set
	Identity ReplicaIdentity `json:"identity"`

	// Name of the table
	Table string `json:"table"`
}

Set replica identity operation

func (*OpSetReplicaIdentity) Complete added in v0.4.0

func (o *OpSetReplicaIdentity) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpSetReplicaIdentity) Rollback added in v0.4.0

func (o *OpSetReplicaIdentity) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpSetReplicaIdentity) Start added in v0.4.0

func (o *OpSetReplicaIdentity) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpSetReplicaIdentity) Validate added in v0.4.0

func (o *OpSetReplicaIdentity) Validate(ctx context.Context, s *schema.Schema) error

type OpSetUnique

type OpSetUnique struct {
	Name   string `json:"name"`
	Table  string `json:"table"`
	Column string `json:"column"`
	Up     string `json:"up"`
	Down   string `json:"down"`
}

func (*OpSetUnique) Complete

func (o *OpSetUnique) Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

func (*OpSetUnique) Rollback

func (o *OpSetUnique) Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

func (*OpSetUnique) Start

func (o *OpSetUnique) Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

func (*OpSetUnique) Validate

func (o *OpSetUnique) Validate(ctx context.Context, s *schema.Schema) error

type Operation

type Operation interface {
	// Start will apply the required changes to enable supporting the new schema
	// version in the database (through a view)
	// update the given views to expose the new schema version
	// Returns the table that requires backfilling, if any.
	Start(ctx context.Context, conn db.DB, stateSchema string, tr SQLTransformer, s *schema.Schema, cbs ...CallbackFn) (*schema.Table, error)

	// Complete will update the database schema to match the current version
	// after calling Start.
	// This method should be called once the previous version is no longer used
	Complete(ctx context.Context, conn db.DB, tr SQLTransformer, s *schema.Schema) error

	// Rollback will revert the changes made by Start. It is not possible to
	// rollback a completed migration.
	Rollback(ctx context.Context, conn db.DB, tr SQLTransformer) error

	// Validate returns a descriptive error if the operation cannot be applied to the given schema
	Validate(ctx context.Context, s *schema.Schema) error
}

type Operations

type Operations []Operation

func (Operations) MarshalJSON

func (v Operations) MarshalJSON() ([]byte, error)

MarshalJSON serializes the list of operations into a JSON array.

func (*Operations) UnmarshalJSON

func (v *Operations) UnmarshalJSON(data []byte) error

UnmarshalJSON deserializes the list of operations from a JSON array.

type PgRollMigration added in v0.4.2

type PgRollMigration struct {
	// Name of the migration
	Name *string `json:"name,omitempty"`

	// Operations corresponds to the JSON schema field "operations".
	Operations PgRollOperations `json:"operations"`
}

PgRoll migration definition

type PgRollOperation added in v0.5.0

type PgRollOperation interface{}

type PgRollOperations added in v0.5.0

type PgRollOperations []interface{}

type ReplicaIdentity added in v0.4.0

type ReplicaIdentity struct {
	// Name of the index to use as replica identity
	Index string `json:"index"`

	// Type of replica identity
	Type string `json:"type"`
}

Replica identity definition

type RequiresSchemaRefreshOperation

type RequiresSchemaRefreshOperation interface {
	// this operation requires the resulting schema to be refreshed when executed on start
	RequiresSchemaRefresh()
}

RequiresSchemaRefreshOperation is an operation that requires the resulting schema to be refreshed

type SQLTransformer added in v0.6.0

type SQLTransformer interface {
	TransformSQL(sql string) (string, error)
}

type SQLTransformerFunc added in v0.6.0

type SQLTransformerFunc func(string) (string, error)

func (SQLTransformerFunc) TransformSQL added in v0.6.0

func (fn SQLTransformerFunc) TransformSQL(sql string) (string, error)

type TableAlreadyExistsError

type TableAlreadyExistsError struct {
	Name string
}

func (TableAlreadyExistsError) Error

func (e TableAlreadyExistsError) Error() string

type TableDoesNotExistError

type TableDoesNotExistError struct {
	Name string
}

func (TableDoesNotExistError) Error

func (e TableDoesNotExistError) Error() string

type TriggerDirection

type TriggerDirection string
const (
	TriggerDirectionUp   TriggerDirection = "up"
	TriggerDirectionDown TriggerDirection = "down"
)

type UniqueConstraint

type UniqueConstraint struct {
	// Name of unique constraint
	Name string `json:"name"`
}

Unique constraint definition

func (*UniqueConstraint) Validate

func (c *UniqueConstraint) Validate() error

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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