1use crate::{collector, command};
12use crate::{uplink, utils::is_default};
13
14#[derive(Clone, Debug, serde::Deserialize, serde::Serialize, schemars::JsonSchema)]
16pub struct Config {
17 #[serde(default)]
18 pub uplinks: Uplinks,
19
20 #[serde(default)]
21 pub collectors: Collectors,
22
23 #[serde(default)]
24 pub commands: Commands,
25}
26
27#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize, schemars::JsonSchema)]
29#[serde(rename_all = "camelCase")]
30pub struct Uplinks {
31 #[serde(default, skip_serializing_if = "Option::is_none")]
32 pub http_server: Option<uplink::http_server::Options>,
33
34 #[serde(default, skip_serializing_if = "Option::is_none")]
35 pub homeassistant: Option<uplink::homeassistant::Options>,
36}
37
38#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize, schemars::JsonSchema)]
40#[serde(rename_all = "camelCase")]
41pub struct CommonCollector {
42 #[serde(default, skip_serializing_if = "is_default")]
43 pub disabled: bool,
44}
45
46#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize, schemars::JsonSchema)]
48#[serde(rename_all = "camelCase")]
49pub struct Collectors {
50 #[serde(default)]
52 pub load_avg: CommonCollector,
53
54 #[serde(default)]
56 pub swap: CommonCollector,
57
58 #[serde(default)]
60 pub memory: CommonCollector,
61
62 #[serde(default)]
64 pub disk_free: CommonCollector,
65
66 #[serde(default)]
68 pub exec: collector::exec::Configuration,
69}
70
71#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize, schemars::JsonSchema)]
73#[serde(rename_all = "camelCase")]
74pub struct CommonCommand {
75 #[serde(default, skip_serializing_if = "is_default")]
76 pub disabled: bool,
77}
78
79#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize, schemars::JsonSchema)]
81#[serde(rename_all = "camelCase")]
82pub struct Commands {
83 #[serde(default)]
85 pub exec: command::exec::Configuration,
86}