Documentation ¶
Index ¶
- Constants
- Variables
- func GetConnection(ctx context.Context, connection *pop.Connection) *pop.Connection
- func Identifier(i string) (string, error)
- func ParameterizedMigrationContent(params map[string]interface{}) ...
- func Transaction(ctx context.Context, connection *pop.Connection, ...) error
- func WithGoMigrations(migrations Migrations) func(*MigrationBox) *MigrationBox
- func WithMigrationContentMiddleware(middleware func(content string, err error) (string, error)) func(*MigrationBox) *MigrationBox
- func WithTemplateValues(v map[string]interface{}) func(*MigrationBox) *MigrationBox
- func WithTestdata(t *testing.T, testdata fs.FS) func(*MigrationBox) *MigrationBox
- func WithTransaction(ctx context.Context, tx *pop.Connection) context.Context
- type GoMigration
- type Migration
- type MigrationBox
- type MigrationContent
- type MigrationStatus
- type MigrationStatuses
- func (m MigrationStatuses) HasPending() bool
- func (m MigrationStatuses) Header() []string
- func (m MigrationStatuses) IDs() []string
- func (m MigrationStatuses) Interface() interface{}
- func (m MigrationStatuses) Len() int
- func (m MigrationStatuses) Table() [][]string
- func (m MigrationStatuses) Write(out io.Writer) error
- type Migrations
- type Migrator
- func (m *Migrator) CreateSchemaMigrations(ctx context.Context) error
- func (m *Migrator) Down(ctx context.Context, step int) error
- func (m *Migrator) DumpMigrationSchema(ctx context.Context) error
- func (m *Migrator) MigrationIsCompatible(dialect string, mi Migration) bool
- func (m *Migrator) Reset(ctx context.Context) error
- func (m *Migrator) Status(ctx context.Context) (MigrationStatuses, error)
- func (m *Migrator) Up(ctx context.Context) error
- func (m *Migrator) UpTo(ctx context.Context, step int) (applied int, err error)
- type TestMigrator
Constants ¶
const ( Pending = "Pending" Applied = "Applied" )
const ( MigrationStatusOpName = "migration-status" MigrationInitOpName = "migration-init" MigrationUpOpName = "migration-up" MigrationRunTransactionOpName = "migration-run-transaction" MigrationDownOpName = "migration-down" )
Variables ¶
var SQLTemplateFuncs = map[string]interface{}{ "identifier": Identifier, }
Functions ¶
func GetConnection ¶ added in v0.0.228
func Identifier ¶ added in v0.0.300
func ParameterizedMigrationContent ¶ added in v0.0.185
func Transaction ¶ added in v0.0.228
func WithGoMigrations ¶ added in v0.0.347
func WithGoMigrations(migrations Migrations) func(*MigrationBox) *MigrationBox
WithGoMigrations adds migrations that have a custom migration runner. TEST THEM THOROUGHLY! It will be very hard to fix a buggy migration.
func WithMigrationContentMiddleware ¶ added in v0.0.183
func WithMigrationContentMiddleware(middleware func(content string, err error) (string, error)) func(*MigrationBox) *MigrationBox
func WithTemplateValues ¶ added in v0.0.183
func WithTemplateValues(v map[string]interface{}) func(*MigrationBox) *MigrationBox
func WithTestdata ¶ added in v0.0.388
func WithTestdata(t *testing.T, testdata fs.FS) func(*MigrationBox) *MigrationBox
WithTestdata
Types ¶
type GoMigration ¶ added in v0.0.347
type GoMigration func(c *pop.Tx) error
type Migration ¶ added in v0.0.185
type Migration struct { // Path to the migration (./migrations/123_create_widgets.up.sql) Path string // Version of the migration (123) Version string // Name of the migration (create_widgets) Name string // Direction of the migration (up) Direction string // Type of migration (sql) Type string // DB type (all|postgres|mysql...) DBType string // Runner function to run/execute the migration Runner func(Migration, *pop.Connection, *pop.Tx) error }
Migration handles the data for a given database migration
type MigrationBox ¶ added in v0.0.190
MigrationBox is a embed migration box.
func NewMigrationBox ¶ added in v0.0.190
func NewMigrationBox(dir fs.FS, m *Migrator, opts ...func(*MigrationBox) *MigrationBox) (*MigrationBox, error)
NewMigrationBox creates a new migration box.
type MigrationContent ¶ added in v0.0.183
type MigrationStatus ¶ added in v0.0.185
type MigrationStatuses ¶ added in v0.0.185
type MigrationStatuses []MigrationStatus
func (MigrationStatuses) HasPending ¶ added in v0.0.185
func (m MigrationStatuses) HasPending() bool
func (MigrationStatuses) Header ¶ added in v0.0.199
func (m MigrationStatuses) Header() []string
func (MigrationStatuses) IDs ¶ added in v0.0.199
func (m MigrationStatuses) IDs() []string
func (MigrationStatuses) Interface ¶ added in v0.0.199
func (m MigrationStatuses) Interface() interface{}
func (MigrationStatuses) Len ¶ added in v0.0.199
func (m MigrationStatuses) Len() int
func (MigrationStatuses) Table ¶ added in v0.0.199
func (m MigrationStatuses) Table() [][]string
type Migrations ¶ added in v0.0.185
type Migrations []Migration
Migrations is a collection of Migration
func (Migrations) Len ¶ added in v0.0.185
func (mfs Migrations) Len() int
func (Migrations) Less ¶ added in v0.0.185
func (mfs Migrations) Less(i, j int) bool
func (Migrations) SortAndFilter ¶ added in v0.0.201
func (mfs Migrations) SortAndFilter(dialect string, modifiers ...func(sort.Interface) sort.Interface) Migrations
func (Migrations) Swap ¶ added in v0.0.185
func (mfs Migrations) Swap(i, j int)
type Migrator ¶ added in v0.0.183
type Migrator struct { Connection *pop.Connection Migrations map[string]Migrations PerMigrationTimeout time.Duration // DumpMigrations if true will dump the migrations to a file called schema.sql DumpMigrations bool // contains filtered or unexported fields }
Migrator forms the basis of all migrations systems. It does the actual heavy lifting of running migrations. When building a new migration system, you should embed this type into your migrator.
func NewMigrator ¶ added in v0.0.183
func NewMigrator(c *pop.Connection, l *logrusx.Logger, tracer *otelx.Tracer, perMigrationTimeout time.Duration) *Migrator
NewMigrator returns a new "blank" migrator. It is recommended to use something like MigrationBox or FileMigrator. A "blank" Migrator should only be used as the basis for a new type of migration system.
func (*Migrator) CreateSchemaMigrations ¶ added in v0.0.183
CreateSchemaMigrations sets up a table to track migrations. This is an idempotent operation.
func (*Migrator) Down ¶ added in v0.0.183
Down runs pending "down" migrations and rolls back the database by the specified number of steps.
func (*Migrator) DumpMigrationSchema ¶ added in v0.0.183
DumpMigrationSchema will generate a file of the current database schema
func (*Migrator) MigrationIsCompatible ¶ added in v0.0.185
MigrationIsCompatible returns true if the migration is compatible with the current database.
func (*Migrator) Reset ¶ added in v0.0.183
Reset the database by running the down migrations followed by the up migrations.
func (*Migrator) Status ¶ added in v0.0.183
func (m *Migrator) Status(ctx context.Context) (MigrationStatuses, error)
Status prints out the status of applied/pending migrations.
type TestMigrator ¶
type TestMigrator struct {
*Migrator
}
TestMigrator is a modified pop.FileMigrator
func NewTestMigrator ¶
func NewTestMigrator(t *testing.T, c *pop.Connection, migrations, testData fs.FS, l *logrusx.Logger) *TestMigrator
Returns a new TestMigrator After running each migration it applies it's corresponding testData sql files. They are identified by having the same version (= number in the front of the filename). The filenames are expected to be of the format ([0-9]+).*(_testdata(\.[dbtype])?.sql