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