migrate

package
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: May 11, 2026 License: MIT Imports: 10 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 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 string) *Runner

NewRunner creates a Runner that reads migration files from dir and executes them against the provided driver.

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