fix: Implement digest calculation loop and update item in DB
This commit is contained in:
@@ -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!(
|
||||||
|
|||||||
Reference in New Issue
Block a user