refactor: remove redundant multi-line search index unwrap clones across all handlers via new get_search_index accessor

This commit is contained in:
Riz Ashraf committed 2026-09-26 08:39:42 +01:00
1 parent d96b4cf822
commit 0ba0ed5b3d
5 files changed
+12 -36

No files matched your search

+2 -10
View File
@@ -126,11 +126,7 @@ impl McpTool for CreateEntitiesHandler {
}
}
});
let idx = state
.search_index
.read()
.unwrap_or_else(|e| e.into_inner())
.clone();
let idx = state.get_search_index();
for entity in inserted {
drop(idx.index_entity(&entity));
}
@@ -237,11 +233,7 @@ impl McpTool for DeleteEntitiesHandler {
return Err(format!("Error: Entities not found: {}", missing.join(", ")));
}
let idx = state
.search_index
.read()
.unwrap_or_else(|e| e.into_inner())
.clone();
let idx = state.get_search_index();
for name in to_delete {
drop(idx.delete_document(&name));
}
+2 -6
View File
@@ -21,11 +21,7 @@ impl McpTool for LogDecisionHandler {
async fn execute(&self, args: Value, state: Arc<MemoryState>) -> Result<String, String> {
let req: LogDecisionTool = serde_json::from_value(args).map_err(|e| e.to_string())?;
let idx = state
.search_index
.read()
.unwrap_or_else(|e| e.into_inner())
.clone();
let idx = state.get_search_index();
let mut final_id = String::new();
state.adrs.modify(|adrs| {
@@ -344,7 +340,7 @@ impl McpTool for OmniSearchHandler {
async fn execute(&self, args: Value, state: Arc<MemoryState>) -> Result<String, String> {
let req: OmniSearchTool = serde_json::from_value(args).map_err(|e| e.to_string())?;
let matches = {
let idx = state.search_index.read().unwrap_or_else(|e| e.into_inner());
let idx = state.get_search_index();
idx.search(&req.query, req.namespace.as_deref())
.unwrap_or_default()
};
+2 -10
View File
@@ -37,11 +37,7 @@ impl McpTool for AddTaskHandler {
dependencies: deps,
acceptance_criteria: vec![],
};
let idx = state
.search_index
.read()
.unwrap_or_else(|e| e.into_inner())
.clone();
let idx = state.get_search_index();
drop(idx.index_task(&task));
state.tasks.modify(|tasks| {
tasks.push(task);
@@ -108,11 +104,7 @@ impl McpTool for DeleteTaskHandler {
});
if deleted_count > 0 {
let idx = state
.search_index
.read()
.unwrap_or_else(|e| e.into_inner())
.clone();
let idx = state.get_search_index();
for id in actually_deleted {
drop(idx.delete_document(&id));
}
+2 -10
View File
@@ -118,11 +118,7 @@ impl McpTool for StoreSnippetHandler {
updated_at: crate::handlers::utils::now_secs(),
};
let idx = state
.search_index
.read()
.unwrap_or_else(|e| e.into_inner())
.clone();
let idx = state.get_search_index();
drop(idx.index_snippet(&snippet));
state.snippets.modify(|snippets| {
@@ -185,11 +181,7 @@ impl McpTool for DeleteSnippetHandler {
deleted = snippets.len() < orig;
});
if deleted {
let idx = state
.search_index
.read()
.unwrap_or_else(|e| e.into_inner())
.clone();
let idx = state.get_search_index();
drop(idx.delete_document(&req.name));
Ok("Snippet deleted.".to_string())
} else {
+4
View File
@@ -123,6 +123,10 @@ impl MemoryState {
self.graph.modify(update_fn);
}
pub fn get_search_index(&self) -> MemoryIndex {
self.search_index.read().unwrap_or_else(|e| e.into_inner()).clone()
}
pub async fn rebuild_index(self: &Arc<Self>) {
if let Ok(new_idx) = MemoryIndex::new(&self.base_dir) {
let idx = new_idx.clone();