arthas 0.3.0

Arthas is an in-memory structure database.
Documentation

use item::Id;
use serde_json::Value;
use error::Error;
use super::logger::Logger;
use store::is_persistence;
use traits::Structure;
use loader::{persistence_exits, create_persistence};


pub struct PersistenceService {
    pub logger: Option<Logger>,
}

impl PersistenceService {
    pub fn new<T: Structure>() -> PersistenceService {
        let struct_name = T::get_struct_name();

        if is_persistence() && !persistence_exits(&struct_name) {
            create_persistence(&struct_name, &T::get_field_int_map());
        }

        PersistenceService {
            logger: if is_persistence() {
                Some(Logger::new(&struct_name))
            } else {
                None
            },
        }
    }

    pub fn insert(&mut self, id: Id, value: Value) -> Result<(), Error> {
        self.logger.as_mut().unwrap().insert(id, value);
        Ok(())
    }

    pub fn delete(&mut self, id: Id) -> Result<(), Error> {
        self.logger.as_mut().unwrap().delete(id);
        Ok(())
    }

    pub fn clear(&mut self) -> Result<(), Error> {
        self.logger.as_mut().unwrap().clear();
        Ok(())
    }
}