pleme-migrations 0.1.1

Database migration library for Pleme platform - safe migrations, zero-downtime
Documentation
//! # pleme-migrations
//!
//! Database migration library for Pleme platform services.
//!
//! ## Features
//!
//! - **Safe Migrations** - Flyway/Liquibase-inspired patterns
//! - **Zero-Downtime** - Non-blocking migration strategies
//! - **Rollback Support** - Automatic rollback on failure
//! - **Version Tracking** - Migration history in database
//!
//! ## Usage
//!
//! ```rust,no_run
//! use pleme_migrations::MigrationRunner;
//!
//! #[tokio::main]
//! async fn main() -> anyhow::Result<()> {
//!     let runner = MigrationRunner::new("postgres://localhost/mydb").await?;
//!     runner.run_pending().await?;
//!     Ok(())
//! }
//! ```

pub mod runner;
pub mod migration;
pub mod strategies;

pub use runner::MigrationRunner;
pub use migration::Migration;
pub use strategies::ZeroDowntimeStrategy;

use thiserror::Error;

/// Migration errors
#[derive(Error, Debug)]
pub enum MigrationError {
    #[error("Migration failed: {0}")]
    MigrationFailed(String),

    #[error("Rollback failed: {0}")]
    RollbackFailed(String),

    #[error("Invalid migration: {0}")]
    InvalidMigration(String),

    #[error("Database connection failed: {0}")]
    ConnectionFailed(String),
}

/// Result type for migration operations
pub type Result<T> = std::result::Result<T, MigrationError>;