use crate::Db;
use mycelium_command::node::Node;
pub fn vacuum(db: Db) -> std::io::Result<Db> {
let clean_db = db.empty();
let primary = db.primary.write().expect("maintenance::vacuum() lock()");
primary.iter().for_each(|x| {
let nodes: Vec<Node> = x.1.get_all_nodes();
for node in nodes {
match crate::core::p_append(&clean_db, x.0, node) {
Ok(_) => (),
Err(e) => {
error!("Error: {:?}", e);
continue;
}
}
}
});
clean_db.save_all()?;
Ok(clean_db)
}