pub struct MigrationRunner<D: MigrationDialect> { /* private fields */ }Expand description
Runs migrations in dependency order.
The runner tracks which migrations are registered and uses the provided
MigrationState to determine which migrations need to be applied.
§Example
use oxide_sql_core::migrations::{
Migration, MigrationRunner, MigrationState, Operation,
CreateTableBuilder, SqliteDialect, bigint,
};
// Define a migration
pub struct Migration0001;
impl Migration for Migration0001 {
const ID: &'static str = "0001_initial";
fn up() -> Vec<Operation> {
vec![CreateTableBuilder::new()
.name("test")
.column(bigint("id").primary_key().build())
.build()
.into()]
}
fn down() -> Vec<Operation> {
vec![Operation::drop_table("test")]
}
}
// Create runner
let mut runner = MigrationRunner::new(SqliteDialect::new());
runner.register::<Migration0001>();
// Check status
let state = MigrationState::new();
let pending = runner.pending_migrations(&state);
assert_eq!(pending.len(), 1);Implementations§
Source§impl<D: MigrationDialect> MigrationRunner<D>
impl<D: MigrationDialect> MigrationRunner<D>
Sourcepub fn migrations(&self) -> &[RegisteredMigration]
pub fn migrations(&self) -> &[RegisteredMigration]
Returns all registered migrations.
Sourcepub fn pending_migrations(
&self,
state: &MigrationState,
) -> Vec<&RegisteredMigration>
pub fn pending_migrations( &self, state: &MigrationState, ) -> Vec<&RegisteredMigration>
Returns migrations that haven’t been applied yet.
Sourcepub fn status(&self, state: &MigrationState) -> Vec<MigrationStatus>
pub fn status(&self, state: &MigrationState) -> Vec<MigrationStatus>
Returns the status of all migrations.
Sourcepub fn sorted_migrations(
&self,
) -> Result<Vec<&RegisteredMigration>, MigrationError>
pub fn sorted_migrations( &self, ) -> Result<Vec<&RegisteredMigration>, MigrationError>
Returns migrations in dependency order (topological sort).
Returns Err if there’s a circular dependency.
Sourcepub fn sql_for_pending(
&self,
state: &MigrationState,
) -> Result<Vec<(&'static str, Vec<String>)>, MigrationError>
pub fn sql_for_pending( &self, state: &MigrationState, ) -> Result<Vec<(&'static str, Vec<String>)>, MigrationError>
Generates SQL for all pending migrations.
Returns a list of (migration_id, sql_statements) pairs.
Sourcepub fn sql_for_rollback(
&self,
state: &MigrationState,
count: usize,
) -> Result<Vec<(&'static str, Vec<String>)>, MigrationError>
pub fn sql_for_rollback( &self, state: &MigrationState, count: usize, ) -> Result<Vec<(&'static str, Vec<String>)>, MigrationError>
Generates SQL for rolling back migrations.
Returns a list of (migration_id, sql_statements) pairs in reverse order.
Auto Trait Implementations§
impl<D> Freeze for MigrationRunner<D>where
D: Freeze,
impl<D> RefUnwindSafe for MigrationRunner<D>where
D: RefUnwindSafe,
impl<D> Send for MigrationRunner<D>where
D: Send,
impl<D> Sync for MigrationRunner<D>where
D: Sync,
impl<D> Unpin for MigrationRunner<D>where
D: Unpin,
impl<D> UnwindSafe for MigrationRunner<D>where
D: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more