refactor + Cow usage

pull/6/head
prplV 2025-03-03 13:50:08 +03:00
parent 83f5dd472c
commit e7aeb78192
1 changed files with 4 additions and 9 deletions

View File

@ -7,23 +7,18 @@ use crate::structs::v3::PrometheusMetrics;
use prometheus::{ Encoder, Gauge, Registry, TextEncoder};
use std::sync::{ Arc, MutexGuard };
use crate::AppState;
use tracing::{ error, debug, info, warn };
use tracing::{ error, info, warn };
use crate::metrics::{MetricsProcesser, MetricsValueType};
pub async fn update_metrics(
State(state): State<Arc<AppState>>,
Json(request) : Json<PrometheusMetrics>
Json(request) : Json<PrometheusMetrics<'_>>
) -> impl IntoResponse {
info!("post on /update");
// let resp = Response::new("body");
// debug!("{:?}", request);
// debug!("{:?}", MetricsProcesser::get_type_of_value(&request));
let service = &request.service_name;
let endpoint = &request.endpoint_name;
for i in request.metrics {
// debug!("{:?}", &i);
// debug!("{:?}", MetricsProcesser::get_type_of_value(&i));
let metric_name = format!("{}_{}_{}", service, endpoint, &i.id);
match MetricsProcesser::get_type_of_value(&i) {
MetricsValueType::Array |
@ -33,7 +28,8 @@ pub async fn update_metrics(
MetricsValueType::Number => {
let gauge = MetricsProcesser::gauge_from_number(
&i,
&metric_name
&metric_name,
i.clone().desc.unwrap_or_else(|| std::borrow::Cow::Borrowed(&i.id)).into_owned()
);
if let Some(gauge) = gauge {
match state.registry.lock() {
@ -50,7 +46,6 @@ pub async fn update_metrics(
},
}
}
// dbg!(gauge);
},
MetricsValueType::ArrayOfStrings => {
warn!("String arrays are unsupported, ignoring ...");