refactor: remove redundant multi-line search index unwrap clones across all handlers via new get_search_index accessor
This commit is contained in:
1 parent
d96b4cf822
commit
0ba0ed5b3d
5 files changed
+12
-36
No files matched your search
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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()
|
||||
};
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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();
|
||||
|
||||
Reference in new issue
Block a user