self-defining pattern for Value type

pull/4/head
prplV 2025-02-27 12:31:06 +03:00
parent ecc8664eb0
commit 979d5410fd
1 changed files with 19 additions and 3 deletions

View File

@ -2,6 +2,8 @@ use crate::structs::v3::MetricOutput;
use serde_json::{Map, Value}; use serde_json::{Map, Value};
use prometheus::Gauge; use prometheus::Gauge;
use tracing::error; use tracing::error;
use prometheus::Opts;
use prometheus::GaugeVec;
#[derive(Debug)] #[derive(Debug)]
pub enum MetricsValueType { pub enum MetricsValueType {
@ -32,6 +34,8 @@ impl MetricsProcesser {
} }
MetricsValueType::None MetricsValueType::None
} }
// TODO: i64 and f63 support
pub fn gauge_from_number( pub fn gauge_from_number(
metric: &MetricOutput, metric: &MetricOutput,
metric_name: &str, metric_name: &str,
@ -102,9 +106,6 @@ impl MetricsProcesser {
metric_value = value.as_f64().unwrap_or(0.0) metric_value = value.as_f64().unwrap_or(0.0)
} }
}); });
use prometheus::Opts;
use prometheus::GaugeVec;
let opts = Opts::new(&name, &help); let opts = Opts::new(&name, &help);
let gauge_vec = GaugeVec::new(opts, &[&label_name]); let gauge_vec = GaugeVec::new(opts, &[&label_name]);
match gauge_vec { match gauge_vec {
@ -177,4 +178,19 @@ impl MetricsProcesser {
metrics metrics
.value.is_number() .value.is_number()
} }
}
trait IsTaggedArray {
fn is_tagged_array(&self) -> bool;
}
impl IsTaggedArray for Value {
fn is_tagged_array(&self) -> bool {
if let Some(arr) = self.as_array() {
return arr[0].get("tag_name").is_some();
}
false
}
} }