From 84e778c6f693027c4f9215eeeda203e36cc19f9a Mon Sep 17 00:00:00 2001 From: Max Audron Date: Fri, 30 Jan 2026 18:19:42 +0100 Subject: init --- src/models.rs | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 src/models.rs (limited to 'src/models.rs') diff --git a/src/models.rs b/src/models.rs new file mode 100644 index 0000000..66389ae --- /dev/null +++ b/src/models.rs @@ -0,0 +1,50 @@ +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(), + } + } +} -- cgit v1.2.3