Skip to main content

pleme_migrations/
lib.rs

1//! # pleme-migrations
2//!
3//! Database migration library for Pleme platform services.
4//!
5//! ## Features
6//!
7//! - **Safe Migrations** - Flyway/Liquibase-inspired patterns
8//! - **Zero-Downtime** - Non-blocking migration strategies
9//! - **Rollback Support** - Automatic rollback on failure
10//! - **Version Tracking** - Migration history in database
11//!
12//! ## Usage
13//!
14//! ```rust,no_run
15//! use pleme_migrations::MigrationRunner;
16//!
17//! #[tokio::main]
18//! async fn main() -> anyhow::Result<()> {
19//!     let runner = MigrationRunner::new("postgres://localhost/mydb").await?;
20//!     runner.run_pending().await?;
21//!     Ok(())
22//! }
23//! ```
24
25pub mod runner;
26pub mod migration;
27pub mod strategies;
28
29pub use runner::MigrationRunner;
30pub use migration::Migration;
31pub use strategies::ZeroDowntimeStrategy;
32
33use thiserror::Error;
34
35/// Migration errors
36#[derive(Error, Debug)]
37pub enum MigrationError {
38    #[error("Migration failed: {0}")]
39    MigrationFailed(String),
40
41    #[error("Rollback failed: {0}")]
42    RollbackFailed(String),
43
44    #[error("Invalid migration: {0}")]
45    InvalidMigration(String),
46
47    #[error("Database connection failed: {0}")]
48    ConnectionFailed(String),
49}
50
51/// Result type for migration operations
52pub type Result<T> = std::result::Result<T, MigrationError>;