use super::error::StorageResult;
use crate::monitor::{Metric, MetricRecord, MetricStats};
pub trait MetricsStore: Send + Sync {
fn write_batch(&mut self, records: &[MetricRecord]) -> StorageResult<()>;
fn query_range(
&self,
metric: &Metric,
start_ts: u64,
end_ts: u64,
) -> StorageResult<Vec<MetricRecord>>;
fn query_all(&self, metric: &Metric) -> StorageResult<Vec<MetricRecord>>;
fn query_stats(&self, metric: &Metric) -> StorageResult<Option<MetricStats>>;
fn count(&self) -> StorageResult<usize>;
fn flush(&mut self) -> StorageResult<()>;
}