Skip to main content

SqliteSessionStoreFactory

Struct SqliteSessionStoreFactory 

Source
pub struct SqliteSessionStoreFactory { /* private fields */ }
Expand description

Explicit first-party factory for one SQLite session database per Lash session.

Hosts opt into this by passing it to lash::LashCoreBuilder::store_factory. The factory never becomes a default: app storage and runtime storage remain host-owned decisions.

Implementations§

Source§

impl SqliteSessionStoreFactory

Source

pub fn new(root: impl Into<PathBuf>) -> Self

Source

pub fn with_options(root: impl Into<PathBuf>, options: StoreOptions) -> Self

Source

pub fn path_for_session(&self, session_id: &str) -> PathBuf

Trait Implementations§

Source§

impl Clone for SqliteSessionStoreFactory

Source§

fn clone(&self) -> SqliteSessionStoreFactory

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for SqliteSessionStoreFactory

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl SessionStoreFactory for SqliteSessionStoreFactory

Source§

fn durability_tier(&self) -> DurabilityTier

Durability tier the stores produced by this factory provide; defaults to [DurabilityTier::Inline].
Source§

fn create_store<'life0, 'life1, 'async_trait>( &'life0 self, request: &'life1 SessionStoreCreateRequest, ) -> Pin<Box<dyn Future<Output = Result<Arc<dyn RuntimePersistence>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn open_existing_store<'life0, 'life1, 'async_trait>( &'life0 self, request: &'life1 SessionStoreCreateRequest, ) -> Pin<Box<dyn Future<Output = Result<Option<Arc<dyn RuntimePersistence>>, String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn delete_session<'life0, 'life1, 'async_trait>( &'life0 self, session_id: &'life1 str, ) -> Pin<Box<dyn Future<Output = Result<(), String>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Source§

fn live_attachment_refs<'life0, 'async_trait>( &'life0 self, intent_grace_cutoff_epoch_ms: u64, ) -> Pin<Box<dyn Future<Output = Result<BTreeSet<AttachmentId>, StoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait,

The attachment GC root set across ALL sessions this factory owns, reconciled against intent_grace_cutoff_epoch_ms: every committed ref, plus every uncommitted intent younger than the cutoff. Intents at or before the cutoff are crash orphans (their turn never committed and has aged past the grace window) — the factory forgets them and excludes them, so their blobs become collectable. Factories with no attachment story default to empty; the durable factories override this (Postgres queries and prunes the global manifest table; SQLite unions and reconciles its per-session databases at sweep time). Exposed to the GC lever via the blanket AttachmentRootSet implementation.
Source§

fn has_live_attachment_ref<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 AttachmentId, intent_grace_cutoff_epoch_ms: u64, ) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>>
where Self: 'async_trait, 'life0: 'async_trait, 'life1: 'async_trait,

Whether ANY session this factory owns currently holds a GC-live ref for attachment_id (a committed ref, or an uncommitted intent younger than the cutoff). The single-id counterpart to Self::live_attachment_refs, used by the attachment GC lever’s delete-time root re-check so it need not re-materialize the whole root set per candidate blob. The default re-materializes the root set and tests membership; the durable factories override with a targeted single-id query (Postgres one indexed SELECT; SQLite iterates its per-session databases only until the first hit). Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AttachmentRootSet for T

Source§

fn live_attachment_refs<'life0, 'async_trait>( &'life0 self, intent_grace_cutoff_epoch_ms: u64, ) -> Pin<Box<dyn Future<Output = Result<BTreeSet<AttachmentId>, StoreError>> + Send + 'async_trait>>
where 'life0: 'async_trait, T: 'async_trait,

The live root set, reconciled against intent_grace_cutoff_epoch_ms. Read more
Source§

fn has_live_attachment_ref<'life0, 'life1, 'async_trait>( &'life0 self, id: &'life1 AttachmentId, intent_grace_cutoff_epoch_ms: u64, ) -> Pin<Box<dyn Future<Output = Result<bool, StoreError>> + Send + 'async_trait>>
where 'life0: 'async_trait, 'life1: 'async_trait, T: 'async_trait,

Whether a single id currently has a live root — a committed ref, or an uncommitted intent younger than intent_grace_cutoff_epoch_ms. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DynClone for T
where T: Clone,

Source§

fn __clone_box(&self, _: Private) -> *mut ()

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more