pub struct InMemoryRepository { /* private fields */ }Expand description
In-memory implementation of the MetricsRepository trait.
This implementation stores all metrics in memory and is useful for:
- Testing and development
- Small-scale applications
- Caching layers
§Example
ⓘ
use term_guard::repository::{InMemoryRepository, ResultKey};
use term_guard::analyzers::AnalyzerContext;
let repository = InMemoryRepository::new();
// Save metrics
let key = ResultKey::now().with_tag("env", "test");
let context = AnalyzerContext::new();
repository.save(key, context).await?;
// Query metrics
let results = repository.load().await
.with_tag("env", "test")
.execute()
.await?;Implementations§
Source§impl InMemoryRepository
impl InMemoryRepository
Source§impl InMemoryRepository
Override the load method to return actual stored contexts
impl InMemoryRepository
Override the load method to return actual stored contexts
Sourcepub async fn load_with_data(&self) -> InMemoryMetricsQuery
pub async fn load_with_data(&self) -> InMemoryMetricsQuery
Loads a query that will return actual stored contexts.
Sourcepub async fn should_use_datafusion(&self) -> bool
pub async fn should_use_datafusion(&self) -> bool
Determines if the dataset is large enough to benefit from DataFusion.
DataFusion has overhead for small datasets, so we only use it when the performance benefits outweigh the setup costs.
Source§impl InMemoryRepository
Custom query executor for in-memory repository with optimized filtering.
impl InMemoryRepository
Custom query executor for in-memory repository with optimized filtering.
Sourcepub async fn execute_query_optimized(
&self,
before: Option<i64>,
after: Option<i64>,
tags: &HashMap<String, String>,
analyzers: &Option<Vec<String>>,
limit: Option<usize>,
offset: Option<usize>,
ascending: bool,
) -> Result<Vec<(ResultKey, AnalyzerContext)>>
pub async fn execute_query_optimized( &self, before: Option<i64>, after: Option<i64>, tags: &HashMap<String, String>, analyzers: &Option<Vec<String>>, limit: Option<usize>, offset: Option<usize>, ascending: bool, ) -> Result<Vec<(ResultKey, AnalyzerContext)>>
Executes a query with in-memory optimizations.
Trait Implementations§
Source§impl Clone for InMemoryRepository
impl Clone for InMemoryRepository
Source§fn clone(&self) -> InMemoryRepository
fn clone(&self) -> InMemoryRepository
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Default for InMemoryRepository
impl Default for InMemoryRepository
Source§impl MetricsRepository for InMemoryRepository
impl MetricsRepository for InMemoryRepository
Source§fn save<'life0, 'async_trait>(
&'life0 self,
key: ResultKey,
metrics: AnalyzerContext,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn save<'life0, 'async_trait>(
&'life0 self,
key: ResultKey,
metrics: AnalyzerContext,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Saves metrics with the given key. Read more
Source§fn load<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = MetricsQuery> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn load<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = MetricsQuery> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Creates a query builder for retrieving metrics. Read more
Source§fn delete<'life0, 'async_trait>(
&'life0 self,
key: ResultKey,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn delete<'life0, 'async_trait>(
&'life0 self,
key: ResultKey,
) -> Pin<Box<dyn Future<Output = Result<()>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Deletes metrics with the given key. Read more
Source§fn list_keys<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<ResultKey>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list_keys<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<ResultKey>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Lists all available keys in the repository. Read more
Source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 ResultKey,
) -> Pin<Box<dyn Future<Output = Result<Option<AnalyzerContext>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
key: &'life1 ResultKey,
) -> Pin<Box<dyn Future<Output = Result<Option<AnalyzerContext>>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Loads a specific metric by key. Read more
Auto Trait Implementations§
impl Freeze for InMemoryRepository
impl !RefUnwindSafe for InMemoryRepository
impl Send for InMemoryRepository
impl Sync for InMemoryRepository
impl Unpin for InMemoryRepository
impl !UnwindSafe for InMemoryRepository
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> DataFusionQueryExecutorExt for Twhere
T: MetricsRepository + ?Sized,
impl<T> DataFusionQueryExecutorExt for Twhere
T: MetricsRepository + ?Sized,
Source§fn execute_datafusion_query<'life0, 'async_trait>(
&'life0 self,
query: MetricsQuery,
) -> Pin<Box<dyn Future<Output = Result<Vec<(ResultKey, AnalyzerContext)>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
fn execute_datafusion_query<'life0, 'async_trait>(
&'life0 self,
query: MetricsQuery,
) -> Pin<Box<dyn Future<Output = Result<Vec<(ResultKey, AnalyzerContext)>>> + Send + 'async_trait>>where
Self: Sync + 'async_trait,
'life0: 'async_trait,
Executes a query using DataFusion’s optimized query engine. Read more
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more