extern crate migrant_lib;
use migrant_lib::config::SqliteSettingsBuilder;
use migrant_lib::Config;
use std::env;
fn run() -> Result<(), migrant_lib::Error> {
let dir = env::current_dir().unwrap();
let config = match migrant_lib::search_for_settings_file(&dir) {
None => {
Config::init_in(&dir)
.with_sqlite_options(
SqliteSettingsBuilder::empty()
.database_path("db/db.db")?
.migration_location("migrations/managed")?,
)
.initialize()?;
println!(
"\nSettings file and migrations table initialized. \
Please run again to apply migrations."
);
return Ok(());
}
Some(p) => Config::from_settings_file(&p)?,
};
let config = config.reload()?;
println!("Applying all migrations...");
migrant_lib::Migrator::with_config(&config)
.direction(migrant_lib::Direction::Up)
.all(true)
.apply()?;
let config = config.reload()?;
migrant_lib::list(&config)?;
println!("Unapplying all migrations...");
migrant_lib::Migrator::with_config(&config)
.direction(migrant_lib::Direction::Down)
.all(true)
.apply()?;
let config = config.reload()?;
migrant_lib::list(&config)?;
Ok(())
}
pub fn main() {
if let Err(e) = run() {
println!("[ERROR] {}", e);
}
}