use serde;
use serde::{Serialize, Deserialize};
use crate::errors::WledJsonApiError;
use crate::structures::none_function;
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Nodes {
pub nodes: Vec<Node>,
}
impl TryFrom<&str> for Nodes{
type Error = WledJsonApiError;
fn try_from(str_in: &str) -> Result<Nodes, WledJsonApiError> {
serde_json::from_str(str_in).map_err(|e| {WledJsonApiError::SerdeError(e)})
}
}
#[derive(Default, Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Node {
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
#[serde(rename = "type")]
pub type_field: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub ip: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub age: Option<u8>,
#[serde(skip_serializing_if = "Option::is_none")]
#[serde(default = "none_function")]
pub vid: Option<u32>,
}