feat: create digest engine with Sha256/Md5/None and integrate with save mode

This commit is contained in:
Andrew Phillips (aider)
2025-05-12 18:21:34 -03:00
parent f6b6bc5768
commit 41060c3029
5 changed files with 130 additions and 0 deletions

View File

@@ -11,6 +11,7 @@ use log::debug;
use rusqlite::Connection;
use crate::db::{self};
use crate::digest_engine::{DigestEngine, get_engine, DigestType};
use crate::modes::common::get_meta_from_env;
use chrono::Utc;
@@ -53,6 +54,10 @@ pub fn mode_save(
let compression_type = compression_type_opt.unwrap();
debug!("MAIN: Compression type: {}", compression_type);
// Create a new digest engine
let digest_type = DigestType::Sha256;
let mut digest_engine = get_engine(digest_type);
let mut item = db::Item {
id: None,
ts: Utc::now(),
@@ -140,6 +145,7 @@ pub fn mode_save(
stdout.write_all(&buffer[..n])?;
item_out.write_all(&buffer[..n])?;
digest_engine.update(&buffer[..n])?;
item.size = match item.size {
None => Some(n as i64),
Some(prev_n) => Some(prev_n + n as i64),
@@ -149,6 +155,10 @@ pub fn mode_save(
stdout.flush()?;
item_out.flush()?;
// Finalize the digest and log the result
let digest = digest_engine.finalize()?;
debug!("DIGEST: {}", digest);
db::update_item(&conn, item.clone())?;