pub struct PersonalKnowledgeCache {
pub last_sync: i64,
/* private fields */
}Expand description
Local cache of personal facts synced from server
Fields§
§last_sync: i64Timestamp of last successful sync with server
Implementations§
Source§impl PersonalKnowledgeCache
impl PersonalKnowledgeCache
Sourcepub fn new<P: AsRef<Path>>(db_path: P, max_queue_size: usize) -> Result<Self>
pub fn new<P: AsRef<Path>>(db_path: P, max_queue_size: usize) -> Result<Self>
Create a new cache with SQLite persistence
Sourcepub fn in_memory(max_queue_size: usize) -> Result<Self>
pub fn in_memory(max_queue_size: usize) -> Result<Self>
Create an in-memory cache (for testing)
Sourcepub fn set_last_sync(&mut self, timestamp: i64) -> Result<()>
pub fn set_last_sync(&mut self, timestamp: i64) -> Result<()>
Update last sync timestamp
Sourcepub fn upsert_fact(&mut self, fact: PersonalFact) -> Result<()>
pub fn upsert_fact(&mut self, fact: PersonalFact) -> Result<()>
Add or update a fact (upsert by key)
Sourcepub fn add_fact(&mut self, fact: PersonalFact) -> Result<()>
pub fn add_fact(&mut self, fact: PersonalFact) -> Result<()>
Add a new fact to the cache
Sourcepub fn upsert_fact_simple(
&mut self,
key: &str,
value: &str,
_confidence: f32,
local_only: bool,
) -> Result<()>
pub fn upsert_fact_simple( &mut self, key: &str, value: &str, _confidence: f32, local_only: bool, ) -> Result<()>
Add or update a fact with simplified interface
Sourcepub fn get_all_facts(&self) -> Vec<&PersonalFact>
pub fn get_all_facts(&self) -> Vec<&PersonalFact>
Get all non-deleted facts
Sourcepub fn get_facts_by_key_prefix(
&self,
prefix: &str,
) -> Result<Vec<&PersonalFact>>
pub fn get_facts_by_key_prefix( &self, prefix: &str, ) -> Result<Vec<&PersonalFact>>
Get facts by key prefix (e.g., “recent_entity:” gets all recent entity facts)
Sourcepub fn update_fact(&mut self, fact: PersonalFact) -> Result<()>
pub fn update_fact(&mut self, fact: PersonalFact) -> Result<()>
Update an existing fact
Sourcepub fn get_fact(&self, id: &str) -> Option<&PersonalFact>
pub fn get_fact(&self, id: &str) -> Option<&PersonalFact>
Get a fact by ID
Sourcepub fn get_fact_by_key(&self, key: &str) -> Option<&PersonalFact>
pub fn get_fact_by_key(&self, key: &str) -> Option<&PersonalFact>
Get a fact by key
Sourcepub fn get_fact_mut(&mut self, id: &str) -> Option<&mut PersonalFact>
pub fn get_fact_mut(&mut self, id: &str) -> Option<&mut PersonalFact>
Get a mutable reference to a fact by ID
Sourcepub fn remove_fact(&mut self, id: &str) -> Result<bool>
pub fn remove_fact(&mut self, id: &str) -> Result<bool>
Remove a fact (soft delete)
Sourcepub fn remove_fact_by_key(&mut self, key: &str) -> Result<bool>
pub fn remove_fact_by_key(&mut self, key: &str) -> Result<bool>
Remove a fact by key (soft delete)
Sourcepub fn all_facts(&self) -> impl Iterator<Item = &PersonalFact>
pub fn all_facts(&self) -> impl Iterator<Item = &PersonalFact>
Get all active facts
Sourcepub fn facts_by_category(
&self,
category: PersonalFactCategory,
) -> Vec<&PersonalFact>
pub fn facts_by_category( &self, category: PersonalFactCategory, ) -> Vec<&PersonalFact>
Get facts by category
Sourcepub fn search_facts(&self, query: &str) -> Vec<&PersonalFact>
pub fn search_facts(&self, query: &str) -> Vec<&PersonalFact>
Get facts matching a search query (simple substring match)
Sourcepub fn get_reliable_facts(&self, min_confidence: f32) -> Vec<&PersonalFact>
pub fn get_reliable_facts(&self, min_confidence: f32) -> Vec<&PersonalFact>
Get facts above a confidence threshold
Sourcepub fn get_syncable_facts(&self) -> Vec<&PersonalFact>
pub fn get_syncable_facts(&self) -> Vec<&PersonalFact>
Get facts that should be synced to server (not local_only)
Sourcepub fn queue_submission(&mut self, fact: PersonalFact) -> Result<bool>
pub fn queue_submission(&mut self, fact: PersonalFact) -> Result<bool>
Queue a fact for submission to server
Sourcepub fn pending_submissions(&self) -> &[PendingFactSubmission]
pub fn pending_submissions(&self) -> &[PendingFactSubmission]
Get pending submissions
Sourcepub fn clear_pending_submissions(&mut self) -> Result<()>
pub fn clear_pending_submissions(&mut self) -> Result<()>
Clear all pending submissions (after successful sync)
Sourcepub fn queue_feedback(&mut self, feedback: PersonalFactFeedback) -> Result<bool>
pub fn queue_feedback(&mut self, feedback: PersonalFactFeedback) -> Result<bool>
Queue feedback for sending to server
Sourcepub fn pending_feedback(&self) -> &[PersonalFactFeedback]
pub fn pending_feedback(&self) -> &[PersonalFactFeedback]
Get pending feedback
Sourcepub fn clear_pending_feedback(&mut self) -> Result<()>
pub fn clear_pending_feedback(&mut self) -> Result<()>
Clear all pending feedback (after successful sync)
Sourcepub fn merge_from_server(
&mut self,
server_facts: Vec<PersonalFact>,
) -> Result<MergeResult>
pub fn merge_from_server( &mut self, server_facts: Vec<PersonalFact>, ) -> Result<MergeResult>
Merge facts from server (handles version conflicts)
Sourcepub fn apply_decay(&mut self) -> Result<u32>
pub fn apply_decay(&mut self) -> Result<u32>
Apply decay to all facts based on category
Sourcepub fn stats(&self) -> CacheStats
pub fn stats(&self) -> CacheStats
Get statistics about the cache
Sourcepub fn export_json(&self) -> Result<String>
pub fn export_json(&self) -> Result<String>
Export all facts as JSON (for /profile export)
Sourcepub fn import_json(&mut self, json: &str) -> Result<ImportResult>
pub fn import_json(&mut self, json: &str) -> Result<ImportResult>
Import facts from JSON (for /profile import)
Auto Trait Implementations§
impl Freeze for PersonalKnowledgeCache
impl RefUnwindSafe for PersonalKnowledgeCache
impl Send for PersonalKnowledgeCache
impl Sync for PersonalKnowledgeCache
impl Unpin for PersonalKnowledgeCache
impl UnsafeUnpin for PersonalKnowledgeCache
impl UnwindSafe for PersonalKnowledgeCache
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
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.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 moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.