Files
RustProxy/src/admin/refresh_preferences.rs
T
2026-10-10 20:56:36 +02:00

42 lines
1.2 KiB
Rust

// Stored inside the existing per-account administration preferences document.
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
#[serde(default, deny_unknown_fields)]
struct RefreshPreferences {
live_enabled: bool,
overview_seconds: u16,
traffic_seconds: u16,
cache_seconds: u16,
system_info_seconds: u16,
}
impl Default for RefreshPreferences {
fn default() -> Self {
Self {
live_enabled: true,
overview_seconds: 2,
traffic_seconds: 5,
cache_seconds: 5,
system_info_seconds: 60,
}
}
}
fn validate_refresh_preferences(refresh: &RefreshPreferences) -> Result<(), ApiError> {
if ![1, 2, 5, 10].contains(&refresh.overview_seconds)
|| ![0, 3, 5, 10, 30].contains(&refresh.traffic_seconds)
|| ![0, 3, 5, 10, 30].contains(&refresh.cache_seconds)
|| ![0, 15, 30, 60, 300].contains(&refresh.system_info_seconds)
{
return Err(ApiError(
StatusCode::UNPROCESSABLE_ENTITY,
"invalid administration refresh interval".into(),
));
}
Ok(())
}
fn default_live_log_columns() -> Vec<String> {
LIVE_LOG_COLUMNS.iter().map(|column| (*column).to_owned()).collect()
}