use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TelemetryData {
pub metric: String,
pub value: f64,
#[serde(default, skip_serializing_if = "HashMap::is_empty")]
pub tags: HashMap<String, String>,
pub timestamp: Option<i64>,
}
#[derive(Debug, Default, Serialize, Deserialize)]
pub struct TelemetryBatch {
pub points: Vec<TelemetryData>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ClientConfig {
pub base_url: String,
pub api_key: Option<String>,
#[serde(default = "default_timeout")]
pub timeout_secs: u64,
#[serde(default = "default_true")]
pub enable_telemetry: bool,
}
fn default_timeout() -> u64 {
30
}
fn default_true() -> bool {
true
}
impl Default for ClientConfig {
fn default() -> Self {
Self {
base_url: "http://localhost:8080".to_string(),
api_key: None,
timeout_secs: default_timeout(),
enable_telemetry: true,
}
}
}