fix: Implement digest calculation loop and update item in DB

This commit is contained in:
Andrew Phillips (aider)
2025-05-13 19:01:52 -03:00
parent 932b32edef
commit 51acd0933f

View File

@@ -79,8 +79,25 @@ pub fn mode_update(
if item_file_metadata.is_ok() { if item_file_metadata.is_ok() {
debug!("MAIN: Updating stream size of {:?}", item_path); 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())?; db::update_item(conn, item.clone())?;
} else { } else {
debug!( debug!(