use serde::{Deserialize, Serialize}; use std::collections::HashMap; #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ContentItem { pub name: String, pub author: String, pub information_url: String, pub version: String, pub active: bool, pub clean_installation: bool, #[serde(skip_serializing)] pub download_url: String, } #[derive(Debug, Clone, Serialize, Deserialize, Default)] pub struct Storage { #[serde(default)] pub car: HashMap, #[serde(default)] pub track: HashMap, #[serde(default)] pub luaapp: HashMap, #[serde(default)] pub app: HashMap, #[serde(default)] pub filter: HashMap, } #[derive(Debug, Serialize)] pub struct ListResponse { pub car: HashMap, pub track: HashMap, pub luaapp: HashMap, pub app: HashMap, pub filter: HashMap, } impl From<&Storage> for ListResponse { fn from(storage: &Storage) -> Self { Self { car: storage.car.iter().map(|(k, v)| (k.clone(), v.version.clone())).collect(), track: storage.track.iter().map(|(k, v)| (k.clone(), v.version.clone())).collect(), luaapp: storage.luaapp.iter().map(|(k, v)| (k.clone(), v.version.clone())).collect(), app: storage.app.iter().map(|(k, v)| (k.clone(), v.version.clone())).collect(), filter: storage.filter.iter().map(|(k, v)| (k.clone(), v.version.clone())).collect(), } } }