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