pub struct FileMemoryStore { /* private fields */ }Expand description
Storage and query engine for file memories
Implementations§
Source§impl FileMemoryStore
impl FileMemoryStore
Sourcepub fn cf_descriptors() -> Vec<ColumnFamilyDescriptor>
pub fn cf_descriptors() -> Vec<ColumnFamilyDescriptor>
Return CF descriptors needed by this store. The caller must include these when opening the shared RocksDB instance.
Sourcepub fn new(db: Arc<DB>, storage_path: &Path) -> Result<Self>
pub fn new(db: Arc<DB>, storage_path: &Path) -> Result<Self>
Create a new file memory store backed by a shared DB that already
contains the required column families (files, file_index).
Sourcepub fn with_config(self, config: CodebaseConfig) -> Self
pub fn with_config(self, config: CodebaseConfig) -> Self
Set custom configuration
Sourcepub fn flush(&self) -> Result<()>
pub fn flush(&self) -> Result<()>
Flush all column families to disk (critical for graceful shutdown)
Sourcepub fn databases(&self) -> Vec<(&str, &Arc<DB>)>
pub fn databases(&self) -> Vec<(&str, &Arc<DB>)>
Get references to all RocksDB databases for backup
Sourcepub fn store(&self, file_memory: &FileMemory) -> Result<()>
pub fn store(&self, file_memory: &FileMemory) -> Result<()>
Store a new file memory
Sourcepub fn get(
&self,
user_id: &str,
file_id: &FileMemoryId,
) -> Result<Option<FileMemory>>
pub fn get( &self, user_id: &str, file_id: &FileMemoryId, ) -> Result<Option<FileMemory>>
Get a file memory by ID
Sourcepub fn get_by_path(
&self,
user_id: &str,
project_id: &ProjectId,
path: &str,
) -> Result<Option<FileMemory>>
pub fn get_by_path( &self, user_id: &str, project_id: &ProjectId, path: &str, ) -> Result<Option<FileMemory>>
Get a file memory by path (relative path within project)
Sourcepub fn update(&self, file_memory: &FileMemory) -> Result<()>
pub fn update(&self, file_memory: &FileMemory) -> Result<()>
Update a file memory
Sourcepub fn delete(&self, user_id: &str, file_id: &FileMemoryId) -> Result<bool>
pub fn delete(&self, user_id: &str, file_id: &FileMemoryId) -> Result<bool>
Delete a file memory
Sourcepub fn delete_project_files(
&self,
user_id: &str,
project_id: &ProjectId,
) -> Result<usize>
pub fn delete_project_files( &self, user_id: &str, project_id: &ProjectId, ) -> Result<usize>
Delete all file memories for a project
Sourcepub fn list_by_user(
&self,
user_id: &str,
limit: Option<usize>,
) -> Result<Vec<FileMemory>>
pub fn list_by_user( &self, user_id: &str, limit: Option<usize>, ) -> Result<Vec<FileMemory>>
List all file memories for a user
Sourcepub fn list_by_project(
&self,
user_id: &str,
project_id: &ProjectId,
limit: Option<usize>,
) -> Result<Vec<FileMemory>>
pub fn list_by_project( &self, user_id: &str, project_id: &ProjectId, limit: Option<usize>, ) -> Result<Vec<FileMemory>>
List all file memories for a project
Sourcepub fn list_by_type(
&self,
user_id: &str,
project_id: &ProjectId,
file_type: &FileType,
limit: Option<usize>,
) -> Result<Vec<FileMemory>>
pub fn list_by_type( &self, user_id: &str, project_id: &ProjectId, file_type: &FileType, limit: Option<usize>, ) -> Result<Vec<FileMemory>>
List file memories by type
Sourcepub fn count_by_project(
&self,
user_id: &str,
project_id: &ProjectId,
) -> Result<usize>
pub fn count_by_project( &self, user_id: &str, project_id: &ProjectId, ) -> Result<usize>
Get file count for a project
Sourcepub fn record_access(
&self,
user_id: &str,
project_id: &ProjectId,
path: &str,
learned_from: LearnedFrom,
) -> Result<Option<FileMemory>>
pub fn record_access( &self, user_id: &str, project_id: &ProjectId, path: &str, learned_from: LearnedFrom, ) -> Result<Option<FileMemory>>
Record an access to a file (increments counter, updates timestamp)
Sourcepub fn scan_codebase(
&self,
codebase_path: &Path,
config: Option<&CodebaseConfig>,
) -> Result<CodebaseScanResult>
pub fn scan_codebase( &self, codebase_path: &Path, config: Option<&CodebaseConfig>, ) -> Result<CodebaseScanResult>
Scan a directory and return eligible files for indexing
Sourcepub fn hash_file_content(content: &[u8]) -> String
pub fn hash_file_content(content: &[u8]) -> String
Compute SHA256 hash of file content
Sourcepub fn index_file(
&self,
codebase_root: &Path,
relative_path: &str,
project_id: &ProjectId,
user_id: &str,
) -> Result<FileMemory>
pub fn index_file( &self, codebase_root: &Path, relative_path: &str, project_id: &ProjectId, user_id: &str, ) -> Result<FileMemory>
Index a single file: read, hash, count lines, detect type, extract key items
Sourcepub fn index_file_with_embedding<E: Embedder>(
&self,
codebase_root: &Path,
relative_path: &str,
project_id: &ProjectId,
user_id: &str,
embedder: &E,
) -> Result<FileMemory>
pub fn index_file_with_embedding<E: Embedder>( &self, codebase_root: &Path, relative_path: &str, project_id: &ProjectId, user_id: &str, embedder: &E, ) -> Result<FileMemory>
Index a single file and generate embedding
Sourcepub fn index_codebase(
&self,
codebase_root: &Path,
project_id: &ProjectId,
user_id: &str,
config: Option<&CodebaseConfig>,
) -> Result<IndexingResult>
pub fn index_codebase( &self, codebase_root: &Path, project_id: &ProjectId, user_id: &str, config: Option<&CodebaseConfig>, ) -> Result<IndexingResult>
Index all files in a codebase (blocking version)
Sourcepub fn index_codebase_with_embeddings<E: Embedder>(
&self,
codebase_root: &Path,
project_id: &ProjectId,
user_id: &str,
embedder: &E,
config: Option<&CodebaseConfig>,
progress_callback: Option<&dyn Fn(IndexingProgress)>,
) -> Result<IndexingResult>
pub fn index_codebase_with_embeddings<E: Embedder>( &self, codebase_root: &Path, project_id: &ProjectId, user_id: &str, embedder: &E, config: Option<&CodebaseConfig>, progress_callback: Option<&dyn Fn(IndexingProgress)>, ) -> Result<IndexingResult>
Index codebase with embeddings (requires embedder)
Sourcepub fn stats(&self, user_id: &str) -> Result<FileMemoryStats>
pub fn stats(&self, user_id: &str) -> Result<FileMemoryStats>
Get statistics for file memories
Auto Trait Implementations§
impl Freeze for FileMemoryStore
impl RefUnwindSafe for FileMemoryStore
impl Send for FileMemoryStore
impl Sync for FileMemoryStore
impl Unpin for FileMemoryStore
impl UnsafeUnpin for FileMemoryStore
impl UnwindSafe for FileMemoryStore
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> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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