diff --git a/src/modes/update.rs b/src/modes/update.rs index f35033f..b6c6fe6 100644 --- a/src/modes/update.rs +++ b/src/modes/update.rs @@ -79,8 +79,25 @@ pub fn mode_update( if item_file_metadata.is_ok() { debug!("MAIN: Updating stream size of {:?}", item_path); - // TODO: Add loop here to calculate new digest and put in item. + // Create and initialize digest engine + let mut digest_engine = digest_engine::get_digest_engine(digest_type); + // Read file content and update digest + let mut file = std::fs::File::open(&item_path)?; + let mut buffer = [0; 4096]; + loop { + let bytes_read = file.read(&mut buffer)?; + if bytes_read == 0 { + break; + } + digest_engine.update(&buffer[..bytes_read]); + } + + // Get final digest value + let digest_value = digest_engine.finalize()?; + + // Update item with new digest value + item.digest_value = Some(digest_value); db::update_item(conn, item.clone())?; } else { debug!(