Pass over src/*.rs, webapp/src/**, and the in-app "?" docs prose: condensed multi-paragraph doc comments to single lines that state the non-obvious why, deleted comments that only restated adjacent code, and tightened the Docs.tsx help-panel wording. No logic, structure, or code formatting changed — verified via cargo test (143 passed) and tsc -b && vite build. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XFUNZwCvz3kcod3352ZR2o
68 lines
2.4 KiB
Rust
68 lines
2.4 KiB
Rust
use crate::metric_primitive::MetricPrimitive;
|
|
use crate::timestamp::Timestamp;
|
|
use serde::{Deserialize, Serialize};
|
|
use std::collections::BTreeMap;
|
|
|
|
#[allow(dead_code)]
|
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
|
pub struct RegexToMetricPrimitiveMatcher {
|
|
pub param_name: String,
|
|
pub capture_group: String,
|
|
pub kind: MetricPrimitiveKind,
|
|
/// Whether this param is a bucket label or its captured value (at most one Value-role param per metric); `#[serde(default)]` so profile files saved before this field existed still load as `Label`.
|
|
#[serde(default)]
|
|
pub role: ParamRole,
|
|
}
|
|
|
|
/// See [`RegexToMetricPrimitiveMatcher::role`].
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, Default)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum ParamRole {
|
|
#[default]
|
|
Label,
|
|
Value,
|
|
}
|
|
|
|
/// `rename_all = "lowercase"` matches other `kind`-style enums, so JSON bodies use "string"/"number"/"timestamp".
|
|
#[allow(dead_code)]
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
|
#[serde(rename_all = "lowercase")]
|
|
pub enum MetricPrimitiveKind {
|
|
String,
|
|
Number,
|
|
Timestamp,
|
|
/// On a Value-role param this is derived as elapsed time since the previous event (not parsed from text); otherwise it's a literal i64 millisecond count.
|
|
Duration,
|
|
}
|
|
|
|
/// Value type paired with [`crate::index_key::IndexKey`] in the engine's primary index.
|
|
#[allow(dead_code)]
|
|
#[derive(Debug, Clone, Serialize)]
|
|
pub enum DataValue {
|
|
/// Paired with `IndexKey::IngestedLog`.
|
|
LogLiteral { text: String },
|
|
/// Paired with `IndexKey::ParamDeclaration`.
|
|
ParamDeclaration {
|
|
message_match_regex: String,
|
|
capture_group: String,
|
|
kind: MetricPrimitiveKind,
|
|
},
|
|
/// Paired with `IndexKey::MetricDeclaration`.
|
|
MetricDeclaration {
|
|
message_match_regex: String,
|
|
params: Vec<RegexToMetricPrimitiveMatcher>,
|
|
/// See `crate::engine::DeclareMetricRequest::matched_labels`.
|
|
matched_labels: Option<BTreeMap<String, String>>,
|
|
/// See `crate::engine::DeclareMetricRequest::unmatched_labels`.
|
|
unmatched_labels: Option<BTreeMap<String, String>>,
|
|
},
|
|
/// Paired with `IndexKey::Bucket`.
|
|
BucketValue {
|
|
values: Vec<(u64, Timestamp, MetricPrimitive)>,
|
|
},
|
|
/// Paired with `IndexKey::LastMetricEvent`.
|
|
LastEventTimestamp {
|
|
timestamp: Timestamp,
|
|
},
|
|
}
|