mycelium_core 0.1.1

Library for Mycelium DDM
Documentation
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)
}