arthas 0.3.0

Arthas is an in-memory structure database.
Documentation

extern crate serde_json;
extern crate arthas;

pub use arthas::traits::Arthas;
use std::collections::HashMap;


#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, Arthas)]
#[arthas(is_one, rename="string_one=one")]
pub struct Atomic {
    pub string_one: String,
    pub string_two: String,
    pub hash_map: HashMap<String, usize>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, Arthas)]
pub struct Comment {
    pub title: String,
    pub content: String,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, Arthas)]
pub struct Article {
    pub _id: String,
    pub title: String,
    pub content: String,
    pub day_to_views: HashMap<String, usize>,
    pub views: usize,
    pub comments: Vec<Comment>,
}

impl Article {
    pub fn new<T: Into<String>>(title: T) -> Article {
        Article { title: title.into(), ..Default::default() }
    }

    pub fn views(mut self, views: usize) -> Article {
        self.views = views;
        self
    }

    pub fn content<T: Into<String>>(mut self, content: T) -> Article {
        self.content = content.into();
        self
    }
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, Arthas)]
pub struct Comments {
    pub day_to_comments: HashMap<String, Comment>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, Arthas)]
pub struct Articles {
    pub day_to_articles: HashMap<String, Article>,
}

#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize, Arthas)]
pub struct Blog {
    pub articles: Articles,
    pub comments: Comments,
}