parsql_migrations/
lib.rs

1//! # parsql-migrations
2//!
3//! Type-safe database migration system for parsql.
4//!
5//! This crate provides a flexible and safe way to manage database schema changes
6//! across multiple database backends (PostgreSQL, SQLite, etc.).
7//!
8//! ## Features
9//!
10//! - Type-safe migration definitions
11//! - Support for SQL and programmatic migrations
12//! - Transaction support with automatic rollback
13//! - Multi-database backend support
14//! - Async runtime support
15//! - Migration validation and checksums
16//!
17//! ## Example
18//!
19//! ```rust,no_run
20//! use parsql_migrations::{Migration, MigrationConnection, MigrationError};
21//!
22//! struct CreateUsersTable;
23//!
24//! impl Migration for CreateUsersTable {
25//!     fn version(&self) -> i64 { 1 }
26//!     fn name(&self) -> &str { "create_users_table" }
27//!     
28//!     fn up(&self, conn: &mut dyn MigrationConnection) -> Result<(), MigrationError> {
29//!         conn.execute(
30//!             "CREATE TABLE users (
31//!                 id BIGSERIAL PRIMARY KEY,
32//!                 name VARCHAR(255) NOT NULL
33//!             )"
34//!         )
35//!     }
36//!     
37//!     fn down(&self, conn: &mut dyn MigrationConnection) -> Result<(), MigrationError> {
38//!         conn.execute("DROP TABLE IF EXISTS users")
39//!     }
40//! }
41//! ```
42
43#![warn(missing_docs)]
44#![warn(clippy::all)]
45#![warn(clippy::pedantic)]
46#![allow(clippy::module_name_repetitions)]
47
48pub mod error;
49// pub mod traits; // Temporarily disabled due to dyn compatibility issues
50// pub mod traits_v2; // Temporarily disabled due to dyn compatibility issues
51pub mod traits_simple;
52pub mod types;
53// pub mod runner; // Temporarily disabled due to dyn compatibility issues
54// pub mod runner_v2; // Temporarily disabled due to dyn compatibility issues
55pub mod runner_simple;
56pub mod config;
57
58// Feature-gated modules
59#[cfg(feature = "postgres")]
60pub mod postgres_simple;
61
62#[cfg(feature = "sqlite")]
63pub mod sqlite_simple;
64
65// Async modules disabled temporarily
66// #[cfg(feature = "tokio-postgres")]
67// pub mod tokio_postgres;
68
69// #[cfg(feature = "deadpool-postgres")]
70// pub mod deadpool_postgres;
71
72// Re-export commonly used types
73pub use error::MigrationError;
74pub use traits_simple::{Migration, MigrationConnection};
75pub use types::{MigrationStatus, MigrationReport, MigrationDetails};
76pub use runner_simple::MigrationRunner;
77pub use config::MigrationConfig;
78
79// Async traits disabled temporarily
80// #[cfg(any(feature = "tokio-postgres", feature = "deadpool-postgres"))]
81// pub use traits::AsyncMigrationConnection;
82
83/// Prelude module for convenient imports
84pub mod prelude {
85    pub use crate::error::MigrationError;
86    pub use crate::traits_simple::{Migration, MigrationConnection};
87    pub use crate::types::{MigrationStatus, MigrationReport};
88    pub use crate::runner_simple::MigrationRunner;
89    pub use crate::config::MigrationConfig;
90    
91    // Async traits disabled temporarily
92    // #[cfg(any(feature = "tokio-postgres", feature = "deadpool-postgres"))]
93    // pub use crate::traits::AsyncMigrationConnection;
94}