use serde::{Deserialize, Serialize}; use serde_json::Value; use crate::ids::ThingsId; /// area wire properties #[derive(Debug, Clone, Serialize, Deserialize, Default)] pub struct AreaProps { /// `tt`, area title #[serde(rename = "tt", default)] pub title: String, /// `tg`, tag ids applied to this area #[serde(rename = "tg", default)] pub tag_ids: Vec, /// `ix`, sort index #[serde(rename = "ix", default)] pub sort_index: i32, /// `xx`, conflict override metadata #[serde(rename = "xx", default)] pub conflict_overrides: Option, } /// sparse patch fields for area `t=1` updates #[derive(Debug, Clone, Serialize, Deserialize, Default)] pub struct AreaPatch { /// `tt`, title #[serde(rename = "tt", skip_serializing_if = "Option::is_none")] pub title: Option, /// `tg`, tag ids #[serde(rename = "tg", skip_serializing_if = "Option::is_none")] pub tag_ids: Option>, /// `md`, modification timestamp #[serde(rename = "md", skip_serializing_if = "Option::is_none")] pub modification_date: Option, /// `ix`, sort index #[serde(rename = "ix", skip_serializing_if = "Option::is_none")] pub sort_index: Option, } impl AreaPatch { pub fn is_empty(&self) -> bool { self.title.is_none() && self.tag_ids.is_none() && self.modification_date.is_none() && self.sort_index.is_none() } }