pub struct SqliteReplayStore { /* private fields */ }Expand description
SQLite-backed persistent ReplayStore.
Open with SqliteReplayStore::open (file path) or
SqliteReplayStore::open_in_memory (tests). Both return the store
plus an AsyncIsleDriver the caller must shutdown().await when
done — dropping the driver without a shutdown call leaves the SQLite
thread as-is until the process exits.
Implementations§
Source§impl SqliteReplayStore
impl SqliteReplayStore
Sourcepub async fn open(
path: impl AsRef<Path>,
) -> Result<(Self, AsyncIsleDriver), ReplayStoreError>
pub async fn open( path: impl AsRef<Path>, ) -> Result<(Self, AsyncIsleDriver), ReplayStoreError>
Open (or create) a SQLite database file and run the schema
migrations. See [init_schema] and the module-level Schema versioning doc.
Sourcepub async fn open_in_memory() -> Result<(Self, AsyncIsleDriver), ReplayStoreError>
pub async fn open_in_memory() -> Result<(Self, AsyncIsleDriver), ReplayStoreError>
Open an ephemeral in-memory database (tests, doctests). In-memory
databases start with user_version = 0 and are always fresh, so
[init_schema] takes the version-0 arm and stamps
CURRENT_SCHEMA_VERSION immediately.
Trait Implementations§
Source§impl ReplayStore for SqliteReplayStore
impl ReplayStore for SqliteReplayStore
Source§fn append<'life0, 'async_trait>(
&'life0 self,
entry: ReplayEntry,
) -> Pin<Box<dyn Future<Output = Result<(), ReplayStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn append<'life0, 'async_trait>(
&'life0 self,
entry: ReplayEntry,
) -> Pin<Box<dyn Future<Output = Result<(), ReplayStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Append one entry. Returns
ReplayStoreError::Duplicate if the
backend already carries a row with the same
(run_id, step_ref, input_hash, occurrence).Source§fn list_by_run<'life0, 'life1, 'async_trait>(
&'life0 self,
run_id: &'life1 RunId,
) -> Pin<Box<dyn Future<Output = Result<Vec<ReplayEntry>, ReplayStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_by_run<'life0, 'life1, 'async_trait>(
&'life0 self,
run_id: &'life1 RunId,
) -> Pin<Box<dyn Future<Output = Result<Vec<ReplayEntry>, ReplayStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Return every entry for
run_id, in insertion order (the order the
dispatcher wrote them).Auto Trait Implementations§
impl Freeze for SqliteReplayStore
impl RefUnwindSafe for SqliteReplayStore
impl Send for SqliteReplayStore
impl Sync for SqliteReplayStore
impl Unpin for SqliteReplayStore
impl UnsafeUnpin for SqliteReplayStore
impl UnwindSafe for SqliteReplayStore
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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