popx

package
v0.0.628 Latest Latest
Warning

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

Go to latest
Published: Apr 19, 2024 License: Apache-2.0 Imports: 29 Imported by: 15

Documentation

Index

Constants

View Source
const (
	Pending = "Pending"
	Applied = "Applied"
)
View Source
const (
	MigrationStatusOpName         = "migration-status"
	MigrationInitOpName           = "migration-init"
	MigrationUpOpName             = "migration-up"
	MigrationRunTransactionOpName = "migration-run-transaction"
	MigrationDownOpName           = "migration-down"
)

Variables

View Source
var SQLTemplateFuncs = map[string]interface{}{
	"identifier": Identifier,
}
View Source
var (
	TransactionRetries prometheus.Collector = transactionRetries
)

Functions

func GetConnection added in v0.0.228

func GetConnection(ctx context.Context, connection *pop.Connection) *pop.Connection

func Identifier added in v0.0.300

func Identifier(i string) (string, error)

func ParameterizedMigrationContent added in v0.0.185

func ParameterizedMigrationContent(params map[string]interface{}) func(mf Migration, c *pop.Connection, r []byte, usingTemplate bool) (string, error)

func Transaction added in v0.0.228

func Transaction(ctx context.Context, connection *pop.Connection, callback func(context.Context, *pop.Connection) error) error

func WithTransaction added in v0.0.228

func WithTransaction(ctx context.Context, tx *pop.Connection) context.Context

Types

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|down)
	Direction string
	// Type of migration (sql|go)
	Type string
	// DB type (all|postgres|mysql...)
	DBType string
	// Runner function to run/execute the migration. Will be wrapped in a
	// database transaction. Mutually exclusive with RunnerNoTx
	Runner func(Migration, *pop.Connection, *pop.Tx) error
	// RunnerNoTx function to run/execute the migration. NOT wrapped in a
	// database transaction. Mutually exclusive with Runner.
	RunnerNoTx func(Migration, *pop.Connection) error
}

Migration handles the data for a given database migration

func (Migration) Valid added in v0.0.565

func (m Migration) Valid() error

type MigrationBox added in v0.0.190

type MigrationBox struct {
	*Migrator

	Dir fs.FS
	// contains filtered or unexported fields
}

MigrationBox is a embed migration box.

func NewMigrationBox added in v0.0.190

func NewMigrationBox(dir fs.FS, m *Migrator, opts ...MigrationBoxOption) (*MigrationBox, error)

NewMigrationBox creates a new migration box.

type MigrationBoxOption added in v0.0.461

type MigrationBoxOption func(*MigrationBox) *MigrationBox

func WithGoMigrations added in v0.0.347

func WithGoMigrations(migrations Migrations) MigrationBoxOption

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)) MigrationBoxOption

func WithTemplateValues added in v0.0.183

func WithTemplateValues(v map[string]interface{}) MigrationBoxOption

func WithTestdata added in v0.0.388

func WithTestdata(t *testing.T, testdata fs.FS) MigrationBoxOption

WithTestdata adds testdata to the migration box.

type MigrationContent added in v0.0.183

type MigrationContent func(mf Migration, c *pop.Connection, r []byte, usingTemplate bool) (string, error)

type MigrationStatus added in v0.0.185

type MigrationStatus struct {
	State   string `json:"state"`
	Version string `json:"version"`
	Name    string `json:"name"`
}

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

func (MigrationStatuses) Write added in v0.0.185

func (m MigrationStatuses) Write(out io.Writer) error

In the context of a cobra.Command, use cmdx.PrintTable instead.

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

func (m *Migrator) CreateSchemaMigrations(ctx context.Context) error

CreateSchemaMigrations sets up a table to track migrations. This is an idempotent operation.

func (*Migrator) Down added in v0.0.183

func (m *Migrator) Down(ctx context.Context, steps int) error

Down runs pending "down" migrations and rolls back the database by the specified number of steps.

func (*Migrator) DumpMigrationSchema added in v0.0.183

func (m *Migrator) DumpMigrationSchema(ctx context.Context) error

DumpMigrationSchema will generate a file of the current database schema

func (*Migrator) MigrationIsCompatible added in v0.0.185

func (m *Migrator) MigrationIsCompatible(dialect string, mi Migration) bool

MigrationIsCompatible returns true if the migration is compatible with the current database.

func (*Migrator) Reset added in v0.0.183

func (m *Migrator) Reset(ctx context.Context) error

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.

func (*Migrator) Up added in v0.0.183

func (m *Migrator) Up(ctx context.Context) error

Up runs pending "up" migrations and applies them to the database.

func (*Migrator) UpTo added in v0.0.183

func (m *Migrator) UpTo(ctx context.Context, step int) (applied int, err error)

UpTo runs up to step "up" migrations and applies them to the database. If step <= 0 all pending migrations are run.

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

Jump to

Keyboard shortcuts

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