state

package
v0.16.0 Latest Latest
Warning

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

Go to latest
Published: Dec 18, 2025 License: Apache-2.0 Imports: 12 Imported by: 1

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrNewPgrollSchema = errors.New("pgroll binary version is older than pgroll schema version")
View Source
var ErrNoActiveMigration = errors.New("no active migration")

Functions

This section is empty.

Types

type BaselineMigration added in v0.13.0

type BaselineMigration struct {
	Name           string
	CreatedAt      time.Time
	SchemaSnapshot schema.Schema
}

BaselineMigration represents a baseline migration record

type HistoryEntry added in v0.12.0

type HistoryEntry struct {
	Migration migrations.RawMigration
	CreatedAt time.Time
}

HistoryEntry represents a single migration in the migration history of a schema

type State

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

func New

func New(ctx context.Context, pgURL, stateSchema string, opts ...StateOpt) (*State, error)

func (*State) Close

func (s *State) Close() error

func (*State) Complete

func (s *State) Complete(ctx context.Context, schema, name string) error

Complete marks a migration as completed

func (*State) CreateBaseline added in v0.13.0

func (s *State) CreateBaseline(ctx context.Context, schemaName, baselineVersion string) error

CreateBaseline creates a baseline migration that captures the current state of the schema. It marks the migration as 'baseline' type and completed (done=true). This is used when you want to start using pgroll with an existing database.

func (*State) GetActiveMigration

func (s *State) GetActiveMigration(ctx context.Context, schema string) (*migrations.Migration, error)

GetActiveMigration returns the name & raw content of the active migration (if any), errors out otherwise

func (*State) HasExistingSchemaWithoutHistory added in v0.13.0

func (s *State) HasExistingSchemaWithoutHistory(ctx context.Context, schemaName string) (bool, error)

HasExistingSchemaWithoutHistory checks if there's an existing schema with tables but no migration history. Returns true if the schema exists, has tables, but has no pgroll migration history

func (*State) Init

func (s *State) Init(ctx context.Context) error

Init initializes the required pg_roll schema to store the state

func (*State) IsActiveMigrationPeriod

func (s *State) IsActiveMigrationPeriod(ctx context.Context, schema string) (bool, error)

IsActiveMigrationPeriod returns true if there is an active migration

func (*State) IsInitialized added in v0.11.0

func (s *State) IsInitialized(ctx context.Context) (bool, error)

IsInitialized checks if the pgroll state schema is initialized.

func (*State) LatestBaseline added in v0.13.0

func (s *State) LatestBaseline(ctx context.Context, schemaName string) (*BaselineMigration, error)

LatestBaseline returns the most recent baseline migration for a schema, or nil if no baseline exists

func (*State) LatestMigration added in v0.14.0

func (s *State) LatestMigration(ctx context.Context, schema string) (*string, error)

LatestMigration returns the name of the latest migration, or nil if there is none.

func (*State) LatestVersion

func (s *State) LatestVersion(ctx context.Context, schema string) (*string, error)

LatestVersion returns the name of the latest version schema, or nil if there is none.

func (*State) PgConn added in v0.11.0

func (s *State) PgConn() *sql.DB

func (*State) PreviousMigration added in v0.14.0

func (s *State) PreviousMigration(ctx context.Context, schema string) (*string, error)

PreviousMigration returns the name of the previous migration, or nil if there is none.

func (*State) PreviousVersion

func (s *State) PreviousVersion(ctx context.Context, schema string) (*string, error)

PreviousVersion returns the name of the previous version schema

func (*State) ReadSchema

func (s *State) ReadSchema(ctx context.Context, schemaName string) (*schema.Schema, error)

ReadSchema reads the schema for the specified schema name

func (*State) Rollback

func (s *State) Rollback(ctx context.Context, schema, name string) error

Rollback removes a migration from the state (we consider it rolled back, as if it never started)

func (*State) Schema

func (s *State) Schema() string

Schema returns the schema name

func (*State) SchemaAfterMigration added in v0.9.0

func (s *State) SchemaAfterMigration(ctx context.Context, schemaName, version string) (*schema.Schema, error)

SchemaAfterMigration reads the schema after the migration `version` was applied to `schemaName`

func (*State) SchemaHistory added in v0.8.0

func (s *State) SchemaHistory(ctx context.Context, schema string) ([]HistoryEntry, error)

SchemaHistory returns all migrations applied to a schema since the most recent baseline in ascending timestamp order

func (*State) SchemaVersion added in v0.14.0

func (s *State) SchemaVersion(ctx context.Context) (string, error)

SchemaVersion retrieves the version stored in the pgroll_version table.

func (*State) Start

func (s *State) Start(ctx context.Context, schemaname string, migration *migrations.Migration) error

Start creates a new migration, storing its name and raw content this will effectively activate a new migration period, so `IsActiveMigrationPeriod` will return true until the migration is completed This method will return the current schema (before the migration is applied)

func (*State) VersionCompatibility added in v0.14.0

func (s *State) VersionCompatibility(ctx context.Context) (VersionCompatibility, error)

VersionCompatibility compares the pgroll version that was used to initialize the `State` instance with the version of the pgroll state schema.

type StateOpt added in v0.14.0

type StateOpt func(s *State)

func WithPgrollVersion added in v0.14.0

func WithPgrollVersion(version string) StateOpt

WithPgrollVersion sets the version of `pgroll` that is constructing the State instance

type VersionCompatibility added in v0.14.0

type VersionCompatibility int

VersionCompatibility represents the result of comparing pgroll binary and state schema versions

const (
	VersionCompatCheckSkipped VersionCompatibility = iota
	VersionCompatNotInitialized
	VersionCompatVersionSchemaOlder
	VersionCompatVersionSchemaEqual
	VersionCompatVersionSchemaNewer
)

Jump to

Keyboard shortcuts

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