migration

package
v0.6.0 Latest Latest
Warning

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

Go to latest
Published: Oct 2, 2025 License: Apache-2.0 Imports: 2 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Logger

type Logger interface {
	// Verbose returns true if verbose/debug logging is enabled
	Verbose() bool

	// LogProgress reports migration progress
	LogProgress(current, total int, item string)

	// LogInfo logs informational messages (always shown)
	LogInfo(msg string)

	// LogDebug logs debug information (only shown if Verbose() is true)
	LogDebug(msg string)

	// LogWarning logs warning messages
	LogWarning(msg string)

	// LogError logs error messages
	LogError(msg string, err error)
}

Logger provides a simple logging interface for migrations Each migration receives a logger and can check verbosity

type Migration

type Migration interface {
	// Name returns the migration identifier (e.g., "001_hash_tags")
	Name() string

	// Version returns the schema version this migration upgrades to (1, 2, 3, etc.)
	// For example, migration 001 upgrades from v0 to v1, so it returns 1
	Version() int

	// Description returns a human-readable description
	Description() string

	// Plan analyzes the current state and returns a migration plan
	Plan(ctx context.Context) (*Plan, error)

	// Apply executes the migration based on the plan
	Apply(ctx context.Context, plan *Plan) (*State, error)

	// Verify validates that the migration was successful
	Verify(ctx context.Context, state *State) (*VerificationResult, error)

	// PlanCleanup analyzes what would be cleaned up without making changes
	// Returns the count of items that would be removed
	PlanCleanup(ctx context.Context) (int, error)

	// Cleanup removes old data after successful verification
	// Should not prompt for confirmation - that's handled by the CLI
	Cleanup(ctx context.Context, state *State) error
}

Migration defines the interface that all migrations must implement

type Plan

type Plan struct {
	MigrationName  string            `json:"migration_name"`
	Description    string            `json:"description"`
	Version        string            `json:"version"`
	Timestamp      time.Time         `json:"timestamp"`
	Scope          map[string]int    `json:"scope"` // e.g., {"tenants": 100, "destinations": 500}
	EstimatedItems int               `json:"estimated_items"`
	Metadata       map[string]string `json:"metadata,omitempty"`
}

Plan represents a migration plan

type Progress

type Progress struct {
	TotalItems     int `json:"total_items"`
	ProcessedItems int `json:"processed_items"`
	FailedItems    int `json:"failed_items"`
	SkippedItems   int `json:"skipped_items"`
}

Progress tracks migration progress

type State

type State struct {
	MigrationName string                 `json:"migration_name"`
	Phase         string                 `json:"phase"` // planned, applied, verified, cleaned
	StartedAt     time.Time              `json:"started_at"`
	CompletedAt   *time.Time             `json:"completed_at,omitempty"`
	Progress      Progress               `json:"progress"`
	Errors        []string               `json:"errors,omitempty"`
	Metadata      map[string]interface{} `json:"metadata,omitempty"`
}

State represents the current state of a migration

type VerificationResult

type VerificationResult struct {
	Valid        bool              `json:"valid"`
	ChecksRun    int               `json:"checks_run"`
	ChecksPassed int               `json:"checks_passed"`
	Issues       []string          `json:"issues,omitempty"`
	Details      map[string]string `json:"details,omitempty"`
}

VerificationResult contains verification results

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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