diff options
Diffstat (limited to 'src/migrations.rs')
| -rw-r--r-- | src/migrations.rs | 46 |
1 files changed, 29 insertions, 17 deletions
diff --git a/src/migrations.rs b/src/migrations.rs index c7cd6bf..5076a9e 100644 --- a/src/migrations.rs +++ b/src/migrations.rs @@ -43,13 +43,16 @@ impl<'a> MigrationRunner<'a> { // Get current migration version let current_version = self.get_current_version()?; - + println!("Current database version: {}", current_version); // Run pending migrations for migration in MIGRATIONS { if migration.version > current_version { - println!("Running migration {}: {}", migration.version, migration.name); + println!( + "Running migration {}: {}", + migration.version, migration.name + ); self.run_migration(migration)?; } } @@ -70,7 +73,7 @@ impl<'a> MigrationRunner<'a> { fn run_migration(&self, migration: &Migration) -> Result<()> { // Execute the migration SQL self.conn.execute_batch(migration.sql)?; - + // Record the migration as applied self.conn.execute( "INSERT INTO schema_migrations (version, name, applied_at) VALUES (?1, ?2, ?3)", @@ -86,14 +89,14 @@ impl<'a> MigrationRunner<'a> { pub fn rollback_to_version(&self, target_version: i32) -> Result<()> { println!("Rolling back to version {}", target_version); - + // This is a simplified rollback - in practice you'd need down migrations // For now, just remove migration records self.conn.execute( "DELETE FROM schema_migrations WHERE version > ?1", [target_version], )?; - + println!("Rollback completed (Note: This doesn't actually undo schema changes)"); Ok(()) } @@ -101,11 +104,11 @@ impl<'a> MigrationRunner<'a> { pub fn show_migration_status(&self) -> Result<()> { println!("Migration Status:"); println!("================"); - - let mut stmt = self.conn.prepare( - "SELECT version, name, applied_at FROM schema_migrations ORDER BY version" - )?; - + + let mut stmt = self + .conn + .prepare("SELECT version, name, applied_at FROM schema_migrations ORDER BY version")?; + let migrations = stmt.query_map([], |row| { Ok(( row.get::<_, i32>(0)?, @@ -116,14 +119,20 @@ impl<'a> MigrationRunner<'a> { for migration in migrations { let (version, name, applied_at) = migration?; - println!("✅ Migration {}: {} (applied: {})", version, name, applied_at); + println!( + "✅ Migration {}: {} (applied: {})", + version, name, applied_at + ); } // Show pending migrations let current_version = self.get_current_version()?; for migration in MIGRATIONS { if migration.version > current_version { - println!("⏳ Migration {}: {} (pending)", migration.version, migration.name); + println!( + "⏳ Migration {}: {} (pending)", + migration.version, migration.name + ); } } @@ -139,14 +148,17 @@ mod tests { fn test_migration_runner() { let conn = Connection::open_in_memory().unwrap(); let runner = MigrationRunner::new(&conn); - + // Should start with version 0 assert_eq!(runner.get_current_version().unwrap(), 0); - + // Run migrations runner.run_migrations().unwrap(); - + // Should now be at latest version - assert_eq!(runner.get_current_version().unwrap(), MIGRATIONS.len() as i32); + assert_eq!( + runner.get_current_version().unwrap(), + MIGRATIONS.len() as i32 + ); } -}
\ No newline at end of file +} |
