pub struct SqliteFactStore { /* private fields */ }Implementations§
Trait Implementations§
Source§impl FactStore for SqliteFactStore
impl FactStore for SqliteFactStore
Source§fn insert_fact<'life0, 'async_trait>(
&'life0 self,
fact: Fact,
) -> Pin<Box<dyn Future<Output = Result<FactId, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn insert_fact<'life0, 'async_trait>(
&'life0 self,
fact: Fact,
) -> Pin<Box<dyn Future<Output = Result<FactId, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Persist a new fact. The
fact.id must be unique; implementations SHOULD
return MemoryError::Database if a duplicate id is detected.Source§fn get_fact<'life0, 'async_trait>(
&'life0 self,
id: FactId,
) -> Pin<Box<dyn Future<Output = Result<Fact, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_fact<'life0, 'async_trait>(
&'life0 self,
id: FactId,
) -> Pin<Box<dyn Future<Output = Result<Fact, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Retrieve a single fact by id.
Source§fn update_fact<'life0, 'async_trait>(
&'life0 self,
id: FactId,
patch: FactPatch,
) -> Pin<Box<dyn Future<Output = Result<Fact, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_fact<'life0, 'async_trait>(
&'life0 self,
id: FactId,
patch: FactPatch,
) -> Pin<Box<dyn Future<Output = Result<Fact, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Apply a partial patch to an existing fact.
Only fields set to
Some(…) in patch are updated.Source§fn list_facts<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 FactFilter,
) -> Pin<Box<dyn Future<Output = Result<Vec<Fact>, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn list_facts<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 FactFilter,
) -> Pin<Box<dyn Future<Output = Result<Vec<Fact>, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
List facts matching the given filter.
Source§fn invalidate_fact<'life0, 'async_trait>(
&'life0 self,
id: FactId,
) -> Pin<Box<dyn Future<Output = Result<(), MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn invalidate_fact<'life0, 'async_trait>(
&'life0 self,
id: FactId,
) -> Pin<Box<dyn Future<Output = Result<(), MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Mark a fact as invalid as of
now (sets invalid_at to the current
timestamp). Does not delete the record; historical queries still see it.Source§fn delete_scope_data<'life0, 'life1, 'async_trait>(
&'life0 self,
scope: &'life1 Scope,
) -> Pin<Box<dyn Future<Output = Result<u64, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn delete_scope_data<'life0, 'life1, 'async_trait>(
&'life0 self,
scope: &'life1 Scope,
) -> Pin<Box<dyn Future<Output = Result<u64, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Delete ALL data (facts, entities, relationships) belonging to
scope.
This is a hard delete and is typically used for GDPR / right-to-erasure
requests. Returns the number of facts deleted.Source§fn export<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 FactFilter,
) -> Pin<Box<dyn Future<Output = Result<Vec<Fact>, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn export<'life0, 'life1, 'async_trait>(
&'life0 self,
filter: &'life1 FactFilter,
) -> Pin<Box<dyn Future<Output = Result<Vec<Fact>, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Export all facts matching
filter as a JSON-serialisable vector.
Implementations SHOULD stream or batch internally to avoid loading
unbounded data into memory when the result set is large.Source§fn import<'life0, 'async_trait>(
&'life0 self,
facts: Vec<Fact>,
) -> Pin<Box<dyn Future<Output = Result<u64, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn import<'life0, 'async_trait>(
&'life0 self,
facts: Vec<Fact>,
) -> Pin<Box<dyn Future<Output = Result<u64, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Import a batch of facts (e.g. from a previous
export).
Existing facts with the same id SHOULD be skipped (upsert-or-ignore).
Returns the number of facts successfully imported.Source§fn stats<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<StoreStats, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn stats<'life0, 'async_trait>(
&'life0 self,
) -> Pin<Box<dyn Future<Output = Result<StoreStats, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Return aggregate statistics for this store.
Source§fn record_access<'life0, 'async_trait>(
&'life0 self,
id: FactId,
) -> Pin<Box<dyn Future<Output = Result<(), MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn record_access<'life0, 'async_trait>(
&'life0 self,
id: FactId,
) -> Pin<Box<dyn Future<Output = Result<(), MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Record that a fact was accessed (increments
access_count,
updates last_accessed). Implementations MAY do this
asynchronously / fire-and-forget; callers SHOULD NOT depend on
the update being immediately visible.Source§fn keyword_search<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
query: &'life1 str,
scope: &'life2 Scope,
top_k: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<Fact>, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn keyword_search<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
query: &'life1 str,
scope: &'life2 Scope,
top_k: usize,
) -> Pin<Box<dyn Future<Output = Result<Vec<Fact>, MemoryError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Full-text keyword search over fact text (BM25 ranking).
Auto Trait Implementations§
impl Freeze for SqliteFactStore
impl !RefUnwindSafe for SqliteFactStore
impl Send for SqliteFactStore
impl Sync for SqliteFactStore
impl Unpin for SqliteFactStore
impl UnsafeUnpin for SqliteFactStore
impl !UnwindSafe for SqliteFactStore
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> 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