use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
pub struct UpdateCheckConfig {
#[serde(default = "default_enabled")]
pub enabled: bool,
#[serde(default = "default_endpoint")]
pub endpoint: String,
#[serde(default = "default_timeout_ms")]
pub timeout_ms: u64,
}
fn default_enabled() -> bool {
true
}
fn default_endpoint() -> String {
"https://velesdb.com/api/check".to_string()
}
fn default_timeout_ms() -> u64 {
2000
}
impl Default for UpdateCheckConfig {
fn default() -> Self {
Self {
enabled: default_enabled(),
endpoint: default_endpoint(),
timeout_ms: default_timeout_ms(),
}
}
}
impl UpdateCheckConfig {
#[must_use]
pub fn is_enabled(&self) -> bool {
if let Ok(val) = std::env::var("VELESDB_NO_UPDATE_CHECK") {
if is_truthy(&val) {
return false;
}
}
if let Ok(val) = std::env::var("VELESDB_UPDATE_CHECK") {
return is_truthy(&val);
}
self.enabled
}
}
fn is_truthy(val: &str) -> bool {
!matches!(val.to_lowercase().as_str(), "0" | "false" | "no" | "off")
}
#[cfg(test)]
#[path = "config_tests.rs"]
mod tests;