24 lines
753 B
Rust
24 lines
753 B
Rust
|
use crate::config::Config;
|
||
|
use crate::database;
|
||
|
use crate::StdResult;
|
||
|
|
||
|
pub(crate) fn downgrade_applied_migrations(config: Config) -> StdResult<()> {
|
||
|
let database_connection_string = &config.database_connection_string()?;
|
||
|
let mut client = database::connect(database_connection_string)?;
|
||
|
|
||
|
let applied_migrations = database::applied_migrations(&mut client)?;
|
||
|
let migrations = config.migrations()?;
|
||
|
|
||
|
if let Some(first_applied_migration) = applied_migrations.first() {
|
||
|
if let Some(migration) = migrations
|
||
|
.iter()
|
||
|
.find(|m| m.name() == first_applied_migration)
|
||
|
{
|
||
|
println!("downgrade {}...", migration.name());
|
||
|
migration.downgrade(&mut client)?;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Ok(())
|
||
|
}
|