migrations

package
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Aug 21, 2025 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Config

type Config struct {
	DatabaseURL    string
	DatabaseMode   string // "single" or "multi"
	DatabaseSchema string // for single mode
	MigrationsPath string
	ServiceName    string
	AutoMigrate    bool
	TargetVersion  uint // 0 means latest

	// Configuración avanzada
	Environment           string
	EnableMetrics         bool
	EnableValidation      bool
	EnableRollback        bool
	EnableDryRun          bool
	MaxRetryAttempts      int
	BackupBeforeMigration bool
	ValidationTimeout     time.Duration
	LockTimeout           time.Duration

	// Integración con gopherkit
	BaseConfig   *config.BaseConfig
	AlertManager *monitoring.AlertManager
}

Config holds migration configuration with enhanced options

func LoadConfigFromBase

func LoadConfigFromBase(baseConfig *config.BaseConfig, serviceName string) *Config

LoadConfigFromBase carga configuración desde BaseConfig de gopherkit

func LoadDefaultConfig

func LoadDefaultConfig() *Config

LoadDefaultConfig loads migration configuration from environment with enhanced options

type Manager

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

Manager handles database migrations with advanced features for both single and multi database modes

func NewManager

func NewManager(config *Config, db *sql.DB) *Manager

NewManager creates a new migration manager with enhanced capabilities

func (*Manager) CreateMigration

func (m *Manager) CreateMigration(name string) error

CreateMigration creates a new migration file with enhanced templates

func (*Manager) GetMigrationHistory

func (m *Manager) GetMigrationHistory() []MigrationExecution

GetMigrationHistory retorna el historial de ejecuciones de migraciones

func (*Manager) GetMigrationInfo

func (m *Manager) GetMigrationInfo() (*MigrationInfo, error)

GetMigrationInfo returns comprehensive information about current migrations

func (*Manager) GetMigrationMetrics

func (m *Manager) GetMigrationMetrics() map[string]interface{}

GetMigrationMetrics retorna métricas del migration manager

func (*Manager) PostValidateMigrations

func (m *Manager) PostValidateMigrations() error

PostValidateMigrations valida el estado después de ejecutar migraciones

func (*Manager) PreValidateMigrations

func (m *Manager) PreValidateMigrations() error

PreValidateMigrations valida las migraciones antes de ejecutarlas

func (*Manager) Reset

func (m *Manager) Reset() error

Reset drops all tables and re-runs migrations with enhanced safety (dangerous!)

func (*Manager) Rollback

func (m *Manager) Rollback(targetVersion uint) error

Rollback rolls back to a specific version with enhanced features

func (*Manager) Run

func (m *Manager) Run() error

Run executes migrations based on the database mode with enhanced features

func (*Manager) ValidateMigrations

func (m *Manager) ValidateMigrations() error

ValidateMigrations checks if migrations are consistent with enhanced validation

type MigrationExecution

type MigrationExecution struct {
	ID           string                 `json:"id"`
	Version      uint                   `json:"version"`
	Direction    string                 `json:"direction"` // "up" or "down"
	StartedAt    time.Time              `json:"started_at"`
	CompletedAt  *time.Time             `json:"completed_at,omitempty"`
	Duration     time.Duration          `json:"duration"`
	Status       MigrationStatus        `json:"status"`
	Error        string                 `json:"error,omitempty"`
	Metadata     map[string]interface{} `json:"metadata,omitempty"`
	ServiceName  string                 `json:"service_name"`
	DatabaseMode string                 `json:"database_mode"`
	Schema       string                 `json:"schema,omitempty"`
}

MigrationExecution represents a migration execution record

type MigrationInfo

type MigrationInfo struct {
	Version       uint                   `json:"version"`
	Dirty         bool                   `json:"dirty"`
	AppliedAt     time.Time              `json:"applied_at"`
	Source        string                 `json:"source"`
	ExecutionTime time.Duration          `json:"execution_time"`
	Status        MigrationStatus        `json:"status"`
	ErrorMessage  string                 `json:"error_message,omitempty"`
	Metadata      map[string]interface{} `json:"metadata,omitempty"`
	Checksum      string                 `json:"checksum,omitempty"`
	RollbackPath  string                 `json:"rollback_path,omitempty"`
}

MigrationInfo holds comprehensive information about a migration

type MigrationStatus

type MigrationStatus string

MigrationStatus representa el estado de una migración

const (
	StatusPending    MigrationStatus = "pending"
	StatusRunning    MigrationStatus = "running"
	StatusCompleted  MigrationStatus = "completed"
	StatusFailed     MigrationStatus = "failed"
	StatusRolledBack MigrationStatus = "rolled_back"
	StatusSkipped    MigrationStatus = "skipped"
)

type MigrationValidationResult

type MigrationValidationResult struct {
	Valid       bool                   `json:"valid"`
	Issues      []ValidationIssue      `json:"issues,omitempty"`
	Warnings    []string               `json:"warnings,omitempty"`
	Metadata    map[string]interface{} `json:"metadata,omitempty"`
	ValidatedAt time.Time              `json:"validated_at"`
}

MigrationValidationResult representa el resultado de validación de una migración

type MigrationsMetricsCollector

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

MigrationsMetricsCollector recopila métricas de migraciones para Prometheus

func NewMigrationsMetricsCollector

func NewMigrationsMetricsCollector(serviceName string) *MigrationsMetricsCollector

NewMigrationsMetricsCollector crea un recolector de métricas para migraciones

func (*MigrationsMetricsCollector) RecordMigration

func (mmc *MigrationsMetricsCollector) RecordMigration(service, direction string, version uint, duration time.Duration)

RecordMigration registra una migración en las métricas

func (*MigrationsMetricsCollector) RecordMigrationSuccess

func (mmc *MigrationsMetricsCollector) RecordMigrationSuccess(service string, duration time.Duration)

RecordMigrationSuccess registra una migración exitosa

func (*MigrationsMetricsCollector) RecordRollback

func (mmc *MigrationsMetricsCollector) RecordRollback()

RecordRollback registra un rollback

func (*MigrationsMetricsCollector) RecordValidationFailure

func (mmc *MigrationsMetricsCollector) RecordValidationFailure()

RecordValidationFailure registra un fallo de validación

type ValidationIssue

type ValidationIssue struct {
	Type       string `json:"type"`
	Severity   string `json:"severity"` // "error", "warning", "info"
	Message    string `json:"message"`
	Suggestion string `json:"suggestion,omitempty"`
	Line       int    `json:"line,omitempty"`
	Column     int    `json:"column,omitempty"`
}

ValidationIssue representa un problema encontrado durante la validación

Jump to

Keyboard shortcuts

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