diff --git a/src/services/item_service.rs b/src/services/item_service.rs index 54d019d..f902380 100644 --- a/src/services/item_service.rs +++ b/src/services/item_service.rs @@ -406,6 +406,36 @@ impl ItemService { Ok(item_id) } + /// Saves pre-loaded content as a new item, typically from MCP (Machine-Common-Processing) sources. + /// + /// Bypasses streaming read, directly writes content and applies metadata/plugins. + /// + /// # Arguments + /// + /// * `content` - Byte slice of content to save. + /// * `tags` - Tags to associate. + /// * `metadata` - Initial metadata key-value pairs. + /// * `cmd` - Mutable command. + /// * `settings` - Settings. + /// * `conn` - Mutable database connection. + /// + /// # Returns + /// + /// * `Result` - The saved item with full details. + /// + /// # Errors + /// + /// * `CoreError::Database(...)` - If DB insert fails. + /// * `CoreError::Io(...)` - If file write fails. + /// + /// # Examples + /// + /// ``` + /// let content = b"Hello, world!"; + /// let tags = vec!["mcp".to_string()]; + /// let meta = HashMap::from([("source".to_string(), "api".to_string())]); + /// let item = service.save_item_from_mcp(content, &tags, &meta, &mut cmd, &settings, &mut conn)?; + /// ``` pub fn save_item_from_mcp( &self, content: &[u8], @@ -465,10 +495,20 @@ impl ItemService { self.get_item(conn, item_id) } + /// Returns a reference to the internal compression service. + /// + /// # Returns + /// + /// Reference to `CompressionService`. pub fn get_compression_service(&self) -> &CompressionService { &self.compression_service } + /// Returns a reference to the data directory path. + /// + /// # Returns + /// + /// Reference to `PathBuf`. pub fn get_data_path(&self) -> &PathBuf { &self.data_path }