pub struct SqliteOperatorSessionStore { /* private fields */ }Expand description
SQLite-backed persistent OperatorSessionStore.
Open with SqliteOperatorSessionStore::open (file path) or
SqliteOperatorSessionStore::open_in_memory (tests). Both return the
store plus an AsyncIsleDriver the caller must shutdown().await
when done — same contract as every sibling sqlite store.
Implementations§
Source§impl SqliteOperatorSessionStore
impl SqliteOperatorSessionStore
Sourcepub async fn open(
path: impl AsRef<Path>,
) -> Result<(Self, AsyncIsleDriver), OperatorSessionStoreError>
pub async fn open( path: impl AsRef<Path>, ) -> Result<(Self, AsyncIsleDriver), OperatorSessionStoreError>
Open (or create) a SQLite database file and run the schema setup.
Also purges a pre-release plaintext-token table
([purge_legacy_plaintext_table]) and restricts the file to 0600
on unix ([harden_file_permissions]).
Sourcepub async fn open_in_memory() -> Result<(Self, AsyncIsleDriver), OperatorSessionStoreError>
pub async fn open_in_memory() -> Result<(Self, AsyncIsleDriver), OperatorSessionStoreError>
Open an ephemeral in-memory database (tests, doctests).
Trait Implementations§
Source§impl OperatorSessionStore for SqliteOperatorSessionStore
impl OperatorSessionStore for SqliteOperatorSessionStore
Source§fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
sid: &'life1 SessionId,
) -> Pin<Box<dyn Future<Output = Result<Option<OperatorSessionRecord>, OperatorSessionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn get<'life0, 'life1, 'async_trait>(
&'life0 self,
sid: &'life1 SessionId,
) -> Pin<Box<dyn Future<Output = Result<Option<OperatorSessionRecord>, OperatorSessionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Unfiltered by design (see the trait’s contract) — no expiry judgment, no delete.
A row that will not decode is an Err(Other) here rather than the
None Self::list turns it into. The difference is what the two
calls are for: list is boot rehydration, whose caller’s error path
takes the whole server down, so one bad row must not be allowed to
become one; this asks about a single named row, and answering
“there is no such row” about one that is sitting in the file would
be the same lie the undecodable-row warn exists to avoid.
Source§fn put<'life0, 'async_trait>(
&'life0 self,
record: OperatorSessionRecord,
) -> Pin<Box<dyn Future<Output = Result<(), OperatorSessionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn put<'life0, 'async_trait>(
&'life0 self,
record: OperatorSessionRecord,
) -> Pin<Box<dyn Future<Output = Result<(), OperatorSessionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
record.sid. Upsert semantics: sids
are freshly minted so a same-sid overwrite only happens on a
deliberate re-put of the same session.Source§fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
sid: &'life1 SessionId,
) -> Pin<Box<dyn Future<Output = Result<(), OperatorSessionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete<'life0, 'life1, 'async_trait>(
&'life0 self,
sid: &'life1 SessionId,
) -> Pin<Box<dyn Future<Output = Result<(), OperatorSessionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
sid. NotFound when no such row exists.Source§fn list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<OperatorSessionRecord>, OperatorSessionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn list<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<Vec<OperatorSessionRecord>, OperatorSessionStoreError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
joined_at_secs (mint order, stable for
deterministic rehydration). Read moreAuto Trait Implementations§
impl Freeze for SqliteOperatorSessionStore
impl RefUnwindSafe for SqliteOperatorSessionStore
impl Send for SqliteOperatorSessionStore
impl Sync for SqliteOperatorSessionStore
impl Unpin for SqliteOperatorSessionStore
impl UnsafeUnpin for SqliteOperatorSessionStore
impl UnwindSafe for SqliteOperatorSessionStore
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
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> ⓘ
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> ⓘ
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