popx

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Aug 2, 2022 License: Apache-2.0 Imports: 26 Imported by: 0

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,
}

Functions

func GetConnection

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

func Identifier

func Identifier(i string) (string, error)

func ParameterizedMigrationContent

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

func Transaction

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

func WithGoMigrations

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

func WithMigrationContentMiddleware(middleware func(content string, err error) (string, error)) func(*MigrationBox) *MigrationBox

func WithTemplateValues

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

func WithTestdata

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

WithTestdata

func WithTransaction

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

Types

type GoMigration

type GoMigration func(c *pop.Tx) error

type Migration

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

func (Migration) Run

func (mf Migration) Run(c *pop.Connection, tx *pop.Tx) error

Run the migration. Returns an error if there is no mf.Runner defined.

type MigrationBox

type MigrationBox struct {
	*Migrator

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

MigrationBox is a embed migration box.

func NewMigrationBox

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

NewMigrationBox creates a new migration box.

type MigrationContent

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

type MigrationStatus

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

type MigrationStatuses

type MigrationStatuses []MigrationStatus

func (MigrationStatuses) HasPending

func (m MigrationStatuses) HasPending() bool

func (MigrationStatuses) Header

func (m MigrationStatuses) Header() []string

func (MigrationStatuses) IDs

func (m MigrationStatuses) IDs() []string

func (MigrationStatuses) Interface

func (m MigrationStatuses) Interface() interface{}

func (MigrationStatuses) Len

func (m MigrationStatuses) Len() int

func (MigrationStatuses) Table

func (m MigrationStatuses) Table() [][]string

func (MigrationStatuses) Write

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

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

type Migrations

type Migrations []Migration

Migrations is a collection of Migration

func (Migrations) Len

func (mfs Migrations) Len() int

func (Migrations) Less

func (mfs Migrations) Less(i, j int) bool

func (Migrations) SortAndFilter

func (mfs Migrations) SortAndFilter(dialect string, modifiers ...func(sort.Interface) sort.Interface) Migrations

func (Migrations) Swap

func (mfs Migrations) Swap(i, j int)

type Migrator

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

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

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

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

func (*Migrator) Down

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

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

func (*Migrator) DumpMigrationSchema

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

DumpMigrationSchema will generate a file of the current database schema

func (*Migrator) MigrationIsCompatible

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

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

func (*Migrator) Reset

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

Reset the database by running the down migrations followed by the up migrations.

func (*Migrator) Status

func (m *Migrator) Status(ctx context.Context) (MigrationStatuses, error)

Status prints out the status of applied/pending migrations.

func (*Migrator) Up

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

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

func (*Migrator) UpTo

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