dalloriam-cloud-protocol 0.3.1

protocol library for personal cloud
Documentation
use serde::{Deserialize, Serialize};

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct Area {
    pub id: i32,
    pub name: String,
}

impl From<(i32, String)> for Area {
    fn from(p: (i32, String)) -> Self {
        Area { id: p.0, name: p.1 }
    }
}

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct AreaList {
    pub areas: Vec<Area>,
}

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct Category {
    pub id: i32,
    pub name: String,
    pub area_id: i32,
}

impl From<(i32, String, i32)> for Category {
    fn from(a: (i32, String, i32)) -> Self {
        Category {
            id: a.0,
            name: a.1,
            area_id: a.2,
        }
    }
}

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct AreaCategories {
    pub id: i32,
    pub name: String,
    pub categories: Vec<Category>,
}

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct CategoryList {
    pub areas: Vec<AreaCategories>,
}

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct NewItem {
    pub category_id: i32,
    pub name: String,
}

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct Item {
    pub id: i32,
    pub name: String,
    pub category_id: i32,
}

impl From<(i32, String, i32)> for Item {
    fn from(i: (i32, String, i32)) -> Self {
        Item {
            id: i.0,
            name: i.1,
            category_id: i.2,
        }
    }
}

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct SearchRequest {
    pub category: Option<i32>,
    pub q: Option<String>,
}

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct CategoryItems {
    pub id: i32,
    pub name: String,
    pub items: Vec<Item>,
}

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct AreaCategoryItems {
    pub id: i32,
    pub name: String,
    pub categories: Vec<CategoryItems>,
}

#[derive(Clone, Debug, Deserialize, Serialize, PartialEq, Eq)]
pub struct ItemsList {
    pub areas: Vec<AreaCategoryItems>,
}