pub struct SqliteStore { /* private fields */ }Expand description
SQLite store backed by a sqlx connection pool.
All database operations are async and non-blocking. Stores created
via SqliteStore::new persist to the given file. Stores created
via SqliteStore::new_memory use a transient file that is
automatically deleted when the last clone is dropped.
Implementations§
Source§impl SqliteStore
impl SqliteStore
Sourcepub async fn new(path: &str) -> Result<Self, StoreError>
pub async fn new(path: &str) -> Result<Self, StoreError>
Create a new SQLite store at the given file path.
The database and schema are created if they do not exist.
§Errors
Returns StoreError::Storage if the database cannot be opened
or the schema cannot be created.
Sourcepub async fn new_memory() -> Result<Self, StoreError>
pub async fn new_memory() -> Result<Self, StoreError>
Create a transient SQLite store backed by a file in the system
temp directory. The file and its WAL/SHM companions are removed
automatically when the last clone is dropped.
§Errors
Returns StoreError::Storage if the schema cannot be created.
Trait Implementations§
Source§impl Clone for SqliteStore
impl Clone for SqliteStore
Source§fn clone(&self) -> SqliteStore
fn clone(&self) -> SqliteStore
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SqliteStore
impl Debug for SqliteStore
Source§impl TraceStore for SqliteStore
impl TraceStore for SqliteStore
Source§fn upsert_trace<'life0, 'life1, 'async_trait>(
&'life0 self,
trace: &'life1 Trace,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn upsert_trace<'life0, 'life1, 'async_trait>(
&'life0 self,
trace: &'life1 Trace,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Insert or update a trace.
Source§fn insert_observation<'life0, 'life1, 'async_trait>(
&'life0 self,
observation: &'life1 Observation,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn insert_observation<'life0, 'life1, 'async_trait>(
&'life0 self,
observation: &'life1 Observation,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Insert an observation.
Source§fn upsert_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 Session,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn upsert_session<'life0, 'life1, 'async_trait>(
&'life0 self,
session: &'life1 Session,
) -> Pin<Box<dyn Future<Output = Result<(), StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Insert or update a session.
Source§fn get_trace<'life0, 'async_trait>(
&'life0 self,
id: Id,
) -> Pin<Box<dyn Future<Output = Result<Option<TraceWithObservations>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_trace<'life0, 'async_trait>(
&'life0 self,
id: Id,
) -> Pin<Box<dyn Future<Output = Result<Option<TraceWithObservations>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get a trace by ID with its observations.
Source§fn query_traces<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 TraceQuery,
) -> Pin<Box<dyn Future<Output = Result<PaginatedResponse<Trace>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn query_traces<'life0, 'life1, 'async_trait>(
&'life0 self,
query: &'life1 TraceQuery,
) -> Pin<Box<dyn Future<Output = Result<PaginatedResponse<Trace>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Query traces with filtering and pagination.
Source§fn get_session<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Session>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get_session<'life0, 'life1, 'async_trait>(
&'life0 self,
id: &'life1 str,
) -> Pin<Box<dyn Future<Output = Result<Option<Session>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Get a session by ID.
Source§fn query_sessions<'life0, 'async_trait>(
&'life0 self,
page: u32,
page_size: u32,
) -> Pin<Box<dyn Future<Output = Result<PaginatedResponse<Session>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn query_sessions<'life0, 'async_trait>(
&'life0 self,
page: u32,
page_size: u32,
) -> Pin<Box<dyn Future<Output = Result<PaginatedResponse<Session>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Query sessions with pagination.
Source§fn get_daily_stats<'life0, 'async_trait>(
&'life0 self,
from: DateTime<Utc>,
to: DateTime<Utc>,
) -> Pin<Box<dyn Future<Output = Result<Vec<DailyStats>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_daily_stats<'life0, 'async_trait>(
&'life0 self,
from: DateTime<Utc>,
to: DateTime<Utc>,
) -> Pin<Box<dyn Future<Output = Result<Vec<DailyStats>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get daily aggregated statistics.
Source§fn get_model_stats<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<ModelStats>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_model_stats<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<ModelStats>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get per-model aggregated statistics.
Source§fn get_summary_stats<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<SummaryStats, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_summary_stats<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<SummaryStats, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Get overall summary statistics with latency percentiles.
Source§fn query_enriched_sessions<'life0, 'async_trait>(
&'life0 self,
page: u32,
page_size: u32,
) -> Pin<Box<dyn Future<Output = Result<PaginatedResponse<EnrichedSession>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn query_enriched_sessions<'life0, 'async_trait>(
&'life0 self,
page: u32,
page_size: u32,
) -> Pin<Box<dyn Future<Output = Result<PaginatedResponse<EnrichedSession>, StoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Query enriched sessions with aggregated data.
Auto Trait Implementations§
impl !RefUnwindSafe for SqliteStore
impl !UnwindSafe for SqliteStore
impl Freeze for SqliteStore
impl Send for SqliteStore
impl Sync for SqliteStore
impl Unpin for SqliteStore
impl UnsafeUnpin for SqliteStore
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> 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