//! The engine actor's inbound message/query types and its outbound response type. use crate::api::dto::{ BucketValueDto, LogEntryDto, LogsParams, MetricDeclarationDto, ParamDeclarationDto, PromqlSeriesDto, StatsDto, TimelineBucketDto, TimelineParams, }; use crate::engine::{ClearParamsResult, DeclareMetricRequest, DeclareParamRequest, IngestedLine, MetricSample}; use std::collections::BTreeMap; use tokio::sync::oneshot; #[allow(dead_code)] pub enum EngineQuery { Logs(LogsParams), Timeline(TimelineParams), Stats, ParamDeclarations, MetricDeclarations, BucketValues { metric_name: String, labels_filter: Option>, start_ms: Option, end_ms: Option, since_sequence: Option, limit: Option, }, Promql { query: String, start_ms: Option, end_ms: Option }, } #[allow(dead_code)] pub enum EngineMessage { Ingest(IngestedLine), IngestMetricSample(MetricSample), DeclareParam { request: DeclareParamRequest, respond_to: oneshot::Sender>, }, RemoveParamDeclaration { name: String, respond_to: oneshot::Sender, }, ClearParams { respond_to: oneshot::Sender, }, DeclareMetric { request: DeclareMetricRequest, respond_to: oneshot::Sender>, }, UpdateMetric { name: String, request: DeclareMetricRequest, respond_to: oneshot::Sender>, }, RemoveMetricDeclaration { name: String, respond_to: oneshot::Sender, }, SetMaxLogs(Option), EnsureSortHelperIndex { param_name: String, respond_to: oneshot::Sender<()>, }, Barrier(oneshot::Sender<()>), } #[allow(dead_code)] pub enum EngineResponse { Logs(Vec), Timeline(Vec), Stats(StatsDto), ParamDeclarations(Vec), MetricDeclarations(Vec), BucketValues(Vec), Promql(Result, String>), Error(String), } impl EngineQuery { pub(crate) fn sort_by(&self) -> Option<&str> { match self { EngineQuery::Logs(params) => params.sort_by.as_deref(), _ => None, } } }