diff --git a/src/modes/server/api/item.rs b/src/modes/server/api/item.rs index 77c29a9..8fb9b18 100644 --- a/src/modes/server/api/item.rs +++ b/src/modes/server/api/item.rs @@ -43,7 +43,13 @@ pub async fn handle_list_items( .map(|s| s.split(',').map(|t| t.trim().to_string()).collect()) .unwrap_or_default(); - let item_service = AsyncItemService::new(state.data_dir.clone(), state.db.clone(), state.item_service.clone()); + let item_service = AsyncItemService::new( + state.data_dir.clone(), + state.db.clone(), + state.item_service.clone(), + state.cmd.clone(), + state.settings.clone() + ); let mut items_with_meta = item_service .list_items(tags, HashMap::new()) .await @@ -166,7 +172,13 @@ pub async fn handle_get_item_latest_content( .map(|s| s.split(',').map(|t| t.trim().to_string()).collect()) .unwrap_or_default(); - let item_service = AsyncItemService::new(state.data_dir.clone(), state.db.clone(), state.item_service.clone()); + let item_service = AsyncItemService::new( + state.data_dir.clone(), + state.db.clone(), + state.item_service.clone(), + state.cmd.clone(), + state.settings.clone() + ); // First find the item to get its ID and metadata let item_with_meta = item_service @@ -222,7 +234,13 @@ pub async fn handle_get_item_content( return Err(StatusCode::BAD_REQUEST); } - let item_service = AsyncItemService::new(state.data_dir.clone(), state.db.clone(), state.item_service.clone()); + let item_service = AsyncItemService::new( + state.data_dir.clone(), + state.db.clone(), + state.item_service.clone(), + state.cmd.clone(), + state.settings.clone() + ); stream_item_content_response(&item_service, item_id, params.allow_binary, params.offset, params.length).await } @@ -325,7 +343,13 @@ pub async fn handle_get_item_latest_meta( .map(|s| s.split(',').map(|t| t.trim().to_string()).collect()) .unwrap_or_default(); - let item_service = AsyncItemService::new(state.data_dir.clone(), state.db.clone(), state.item_service.clone()); + let item_service = AsyncItemService::new( + state.data_dir.clone(), + state.db.clone(), + state.item_service.clone(), + state.cmd.clone(), + state.settings.clone() + ); match item_service.find_item(vec![], tags, HashMap::new()).await { Ok(item_with_meta) => { @@ -372,7 +396,13 @@ pub async fn handle_get_item_meta( State(state): State, Path(item_id): Path, ) -> Result>>, StatusCode> { - let item_service = AsyncItemService::new(state.data_dir.clone(), state.db.clone(), state.item_service.clone()); + let item_service = AsyncItemService::new( + state.data_dir.clone(), + state.db.clone(), + state.item_service.clone(), + state.cmd.clone(), + state.settings.clone() + ); match item_service.get_item(item_id).await { Ok(item_with_meta) => { diff --git a/src/modes/server/mcp/tools.rs b/src/modes/server/mcp/tools.rs index 3efd25d..9033f1a 100644 --- a/src/modes/server/mcp/tools.rs +++ b/src/modes/server/mcp/tools.rs @@ -69,7 +69,13 @@ impl KeepTools { metadata.len() ); - let service = AsyncItemService::new(self.state.data_dir.clone(), self.state.db.clone(), self.state.item_service.clone()); + let service = AsyncItemService::new( + self.state.data_dir.clone(), + self.state.db.clone(), + self.state.item_service.clone(), + self.state.cmd.clone(), + self.state.settings.clone() + ); let item_with_meta = service .save_item_from_mcp(content.as_bytes().to_vec(), tags, metadata) .await @@ -90,7 +96,13 @@ impl KeepTools { .and_then(|v| v.as_i64()) .ok_or_else(|| ToolError::InvalidArguments("Missing or invalid 'id' field".to_string()))?; - let service = AsyncItemService::new(self.state.data_dir.clone(), self.state.db.clone(), self.state.item_service.clone()); + let service = AsyncItemService::new( + self.state.data_dir.clone(), + self.state.db.clone(), + self.state.item_service.clone(), + self.state.cmd.clone(), + self.state.settings.clone() + ); let item_with_content = match service.get_item_content(item_id).await { Ok(iwc) => iwc, @@ -124,7 +136,13 @@ impl KeepTools { .map(|arr| arr.iter().filter_map(|v| v.as_str().map(|s| s.to_string())).collect()) .unwrap_or_default(); - let service = AsyncItemService::new(self.state.data_dir.clone(), self.state.db.clone(), self.state.item_service.clone()); + let service = AsyncItemService::new( + self.state.data_dir.clone(), + self.state.db.clone(), + self.state.item_service.clone(), + self.state.cmd.clone(), + self.state.settings.clone() + ); let item_with_meta = match service.find_item(vec![], tags, HashMap::new()).await { Ok(iwm) => iwm, @@ -171,7 +189,13 @@ impl KeepTools { .and_then(|v| v.as_u64()) .unwrap_or(0) as usize; - let service = AsyncItemService::new(self.state.data_dir.clone(), self.state.db.clone(), self.state.item_service.clone()); + let service = AsyncItemService::new( + self.state.data_dir.clone(), + self.state.db.clone(), + self.state.item_service.clone(), + self.state.cmd.clone(), + self.state.settings.clone() + ); let mut items_with_meta = service.list_items(tags, HashMap::new()).await.map_err(|e| ToolError::Other(anyhow::Error::from(e)))?; // Sort by timestamp (newest first) and apply pagination @@ -224,7 +248,13 @@ impl KeepTools { }).collect()) .unwrap_or_default(); - let service = AsyncItemService::new(self.state.data_dir.clone(), self.state.db.clone(), self.state.item_service.clone()); + let service = AsyncItemService::new( + self.state.data_dir.clone(), + self.state.db.clone(), + self.state.item_service.clone(), + self.state.cmd.clone(), + self.state.settings.clone() + ); let mut items_with_meta = service.list_items(tags.clone(), metadata.clone()).await.map_err(|e| ToolError::Other(anyhow::Error::from(e)))?; // Sort by timestamp (newest first)