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
impl SqliteSessionStoreFactory
pub fn new(root: impl Into<PathBuf>) -> Self
pub fn with_options(root: impl Into<PathBuf>, options: StoreOptions) -> Self
Sourcepub fn new_with_process_registry(
root: impl Into<PathBuf>,
process_registry_path: impl Into<PathBuf>,
) -> Self
pub fn new_with_process_registry( root: impl Into<PathBuf>, process_registry_path: impl Into<PathBuf>, ) -> Self
Construct a factory with explicit process-owner liveness wiring for attachment GC. This is the warning-free durable constructor when the deployment uses a Lash SQLite process registry.
pub fn with_options_and_process_registry( root: impl Into<PathBuf>, options: StoreOptions, process_registry_path: impl Into<PathBuf>, ) -> Self
pub fn with_clock(self, clock: Arc<dyn Clock>) -> Self
pub fn path_for_session(&self, session_id: &str) -> PathBuf
Trait Implementations§
Source§impl Clone for SqliteSessionStoreFactory
impl Clone for SqliteSessionStoreFactory
Source§fn clone(&self) -> SqliteSessionStoreFactory
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)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for SqliteSessionStoreFactory
impl Debug for SqliteSessionStoreFactory
Source§impl SessionStoreFactory for SqliteSessionStoreFactory
impl SessionStoreFactory for SqliteSessionStoreFactory
Source§fn durability_tier(&self) -> DurabilityTier
fn durability_tier(&self) -> DurabilityTier
Durability tier the stores produced by this factory provide; defaults to
[
DurabilityTier::Inline].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,
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,
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,
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 every session this factory owns. An
uncommitted intent is forgotten only when it is old enough and its
durable owner is dead: a superseding session turn commit or an absent
process row. Ownerless host puts use age alone. Factories with no
attachment story default to empty; durable factories evaluate and prune
the predicate atomically. 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,
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 under that same age plus owner-reachability rule. 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 moreAuto Trait Implementations§
impl !RefUnwindSafe for SqliteSessionStoreFactory
impl !UnwindSafe for SqliteSessionStoreFactory
impl Freeze for SqliteSessionStoreFactory
impl Send for SqliteSessionStoreFactory
impl Sync for SqliteSessionStoreFactory
impl Unpin for SqliteSessionStoreFactory
impl UnsafeUnpin for SqliteSessionStoreFactory
Blanket Implementations§
Source§impl<T> AttachmentRootSet for Twhere
T: SessionStoreFactory + ?Sized,
impl<T> AttachmentRootSet for Twhere
T: SessionStoreFactory + ?Sized,
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,
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 moreSource§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,
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 under the same age plus
owner-reachability rule as
Self::live_attachment_refs. Read moreSource§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