use std::collections::BTreeMap;
use chronix_core::FieldValue;
pub(crate) fn extract_numeric_value(
fields: &BTreeMap<String, FieldValue>,
field_name: Option<&str>,
) -> Option<f64> {
let v = if let Some(name) = field_name {
fields.get(name).and_then(field_to_f64)
} else {
fields.values().find_map(field_to_f64)
};
v.filter(|v| v.is_finite())
}
pub(crate) fn field_to_f64(fv: &FieldValue) -> Option<f64> {
fv.as_f64_lossy()
}
pub(crate) fn compute_tags_key(tags: &BTreeMap<String, String>) -> String {
use std::fmt::Write;
let mut key = String::new();
for (k, v) in tags {
let _ = write!(key, "{k}={v},");
}
key
}