uddf_sdk/entities/generator/
structure.rs1use chrono::{DateTime, Utc};
2use serde::Serialize;
3
4use crate::entities::{link::structure::Link, manufacturer::structure::Manufacturer};
5
6#[derive(Debug, Serialize)]
7#[serde(rename_all = "lowercase")]
8pub enum GeneratorType {
9 Converter,
10 DiveComputer,
11 LogBook,
12}
13
14#[derive(Debug, Serialize)]
18pub struct Generator {
19 pub name: String,
20 #[serde(rename = "type")]
21 pub generator_type: GeneratorType,
22 #[serde(skip_serializing_if = "Option::is_none")]
23 pub manufacturer: Option<Manufacturer>,
24 #[serde(skip_serializing_if = "Option::is_none")]
25 pub link: Option<Link>,
26 #[serde(rename = "datetime")]
27 pub date_time: DateTime<Utc>,
28}
29
30impl Generator {
31 pub fn validate(&self) -> Result<(), String> {
32 if self.manufacturer.is_some() && self.link.is_some() {
33 return Err("Generator cannot have both manufacturer and link".to_string());
34 }
35 Ok(())
36 }
37}