migrate

package
v0.5.0 Latest Latest
Warning

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

Go to latest
Published: Jun 15, 2026 License: MIT Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ChecksumContent

func ChecksumContent(content string) string

ChecksumContent returns the SHA-256 hex digest of the given content string.

func ForceLockForTest added in v0.5.0

func ForceLockForTest(ctx context.Context, drv driver.Driver) error

ForceLockForTest acquires the SQLite/libSQL sentinel lock out of band. Test-only.

func ForceUnlockForTest added in v0.5.0

func ForceUnlockForTest(ctx context.Context, drv driver.Driver) error

ForceUnlockForTest releases the SQLite/libSQL sentinel lock. Test-only.

func WriteMigration

func WriteMigration(dir, name, upSQL, downSQL string) (string, error)

WriteMigration creates a new migration file pair in the given directory. It returns the generated version string (timestamp in YYYYMMDDHHmmss format).

Types

type LintResult

type LintResult struct {
	Version  string
	Name     string
	Expected string
	Actual   string
}

LintResult reports a migration file whose content has changed after it was applied to the database.

type Migration

type Migration struct {
	Version string
	Name    string
	UpSQL   string
	DownSQL string
}

Migration represents a single versioned migration with up and down SQL.

func ParseMigrationDir

func ParseMigrationDir(dir string) ([]Migration, error)

ParseMigrationDir reads a directory of migration files and returns them sorted by version. Files must follow the naming convention:

<version>_<name>.up.sql
<version>_<name>.down.sql

If the directory does not exist, it returns nil with no error.

type MigrationState

type MigrationState string

MigrationState indicates the lifecycle state of a migration.

const (
	// StateApplied means the migration is in the directory and has been applied
	// with a matching checksum.
	StateApplied MigrationState = "applied"
	// StatePending means the migration is in the directory but has not been applied.
	StatePending MigrationState = "pending"
	// StateModified means the migration has been applied but the file content
	// no longer matches the stored checksum.
	StateModified MigrationState = "modified"
	// StateMissing means the migration was applied but the file no longer exists
	// in the migration directory.
	StateMissing MigrationState = "missing"
)

type MigrationStatus

type MigrationStatus struct {
	Version string
	Name    string
	State   MigrationState
	// Applied is true when the migration has been applied to the database,
	// regardless of whether the file still matches. Kept for backward compatibility.
	Applied bool
}

MigrationStatus represents the state of a single migration.

type Runner

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

Runner executes migrations against a database using the driver interface.

func NewRunner

func NewRunner(drv driver.Driver, dir, dialect string) *Runner

NewRunner creates a Runner that reads migration files from dir and executes them against the provided driver. dialect ("postgres", "sqlite", or "libsql") selects the migration-lock strategy used by Up/Down.

func (*Runner) Dialect added in v0.5.0

func (r *Runner) Dialect() string

Dialect returns the dialect string the Runner was constructed with.

func (*Runner) Down

func (r *Runner) Down(ctx context.Context) error

Down rolls back the most recently applied migration.

func (*Runner) Lint

func (r *Runner) Lint(ctx context.Context) ([]LintResult, error)

Lint checks all applied migrations for checksum mismatches, detecting files that were modified after being applied.

func (*Runner) Pending added in v0.5.0

func (r *Runner) Pending(ctx context.Context) ([]Migration, error)

Pending returns the migrations present in the directory that have not yet been applied to the database, in version order. It is the basis for `migrate check`: generating a new migration while unapplied files exist compounds snapshot drift, so callers should surface a clear error.

func (*Runner) Status

func (r *Runner) Status(ctx context.Context) ([]MigrationStatus, error)

Status returns the status of all migrations, including those in the directory and those applied to the database. Each migration is classified as one of: applied, pending, modified, or missing.

func (*Runner) Up

func (r *Runner) Up(ctx context.Context) (int, error)

Up applies all pending migrations in version order. Each migration runs in its own transaction. Returns the number of migrations applied.

Jump to

Keyboard shortcuts

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