freedom_models/
satellite_configuration.rs1#[cfg(feature = "serde")]
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4use time::OffsetDateTime;
5use url::Url;
6
7use crate::Hateoas;
8
9#[cfg(feature = "serde")]
10use super::utils;
11
12#[cfg_attr(
14 feature = "serde",
15 derive(Serialize, Deserialize),
16 serde(rename_all = "camelCase")
17)]
18#[derive(Debug, Clone, PartialEq, Eq)]
19pub struct SatelliteConfiguration {
20 #[cfg_attr(feature = "serde", serde(with = "time::serde::iso8601"))]
21 pub created: OffsetDateTime,
22 #[cfg_attr(
23 feature = "serde",
24 serde(default, with = "time::serde::iso8601::option")
25 )]
26 pub modified: Option<OffsetDateTime>,
27 pub name: String,
28 #[cfg_attr(feature = "serde", serde(default))]
29 pub orbit: String,
30 #[cfg_attr(feature = "serde", serde(default))]
31 pub notes: String,
32 #[cfg_attr(feature = "serde", serde(rename = "pullTLE"))]
33 pub pull_tle: bool,
34 #[cfg_attr(feature = "serde", serde(default))]
35 pub internal_meta_data: Option<HashMap<String, String>>,
36 pub account_name: String,
37 #[cfg_attr(feature = "serde", serde(default))]
38 pub meta_data: Option<HashMap<String, String>>,
39 #[cfg_attr(
40 feature = "serde",
41 serde(rename = "_links", with = "utils::links::serde", default)
42 )]
43 pub links: HashMap<String, Url>,
44}
45
46impl Hateoas for SatelliteConfiguration {
47 fn get_links(&self) -> &HashMap<String, url::Url> {
48 &self.links
49 }
50
51 fn get_links_mut(&mut self) -> &mut HashMap<String, url::Url> {
52 &mut self.links
53 }
54}