use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "PascalCase")]
pub struct DeviceStateItem {
pub name: String,
pub value: serde_json::Value,
}
pub struct DeviceStateBuilder {
items: Vec<DeviceStateItem>,
}
impl DeviceStateBuilder {
pub fn new() -> Self {
Self { items: Vec::new() }
}
pub fn add(mut self, name: &str, value: impl Serialize) -> Self {
self.items.push(DeviceStateItem {
name: name.into(),
value: serde_json::to_value(value).unwrap(),
});
self
}
pub fn build(self) -> Vec<DeviceStateItem> {
self.items
}
}
impl Default for DeviceStateBuilder {
fn default() -> Self {
Self::new()
}
}