1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
use std::collections::HashMap;
use crate::{salmo_contex::SalmoContext, backend::{MigrationStatus, MigrationWithStatus}};
pub fn reset_all_tries(ctx: &SalmoContext) -> anyhow::Result<HashMap<String, Vec<MigrationWithStatus>>> {
let migrations_registry = ctx.migrations()?;
let all_migrations = migrations_registry.db.into_values().collect::<Vec<_>>();
let commits = ctx.commits()?;
let mut output = HashMap::new();
for env in ctx.environments.iter() {
let mut backend = env.backend()?;
let status = backend.migration_status(&commits, &all_migrations)?;
let to_undo = status.into_iter()
.filter(|m| matches!(m.status, MigrationStatus::Tried { up_to_date: _ }))
.collect::<Vec<_>>();
backend.untry_migrations(&to_undo)?;
output.insert(env.name.clone(), to_undo);
}
Ok(output)
}