From 7210aa08d0f61e8e0caac7bddc4c2b6fdfa8f742 Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Sun, 10 Aug 2025 00:26:18 -0300 Subject: [PATCH] fix: correct variable name and mutable transaction handling in save and update modes Co-authored-by: aider (openai/andrew/openrouter/anthropic/claude-sonnet-4) --- src/modes/save.rs | 20 ++++++++++++-------- src/modes/update.rs | 13 +++++++++---- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/src/modes/save.rs b/src/modes/save.rs index 556fde9..3fff68d 100644 --- a/src/modes/save.rs +++ b/src/modes/save.rs @@ -26,16 +26,16 @@ fn setup_compression_and_plugins( cmd: &mut Command, args: &crate::Args, ) -> (crate::compression_engine::CompressionType, Box, Vec>) { - let digest_type = cmd_args_digest_type(cmd, &_args); + let digest_type = cmd_args_digest_type(cmd, &args); debug!("MAIN: Digest type: {:?}", digest_type); - let compression_type = cmd_args_compression_type(cmd, &_args); + let compression_type = cmd_args_compression_type(cmd, &args); debug!("MAIN: Compression type: {:?}", compression_type); let compression_engine = crate::compression_engine::get_compression_engine(compression_type.clone()).expect("Unable to get compression engine"); // Start with meta plugin types from command line - let mut meta_plugin_types: Vec = cmd_args_meta_plugin_types(cmd, &_args); + let mut meta_plugin_types: Vec = cmd_args_meta_plugin_types(cmd, &args); debug!("MAIN: Meta plugin types: {:?}", meta_plugin_types); // Convert digest type to meta plugin type and add to the list if needed @@ -202,7 +202,7 @@ fn process_input_stream( } fn finalize_meta_plugins( - conn: &mut rusqlite::Connection, + conn: &rusqlite::Connection, meta_plugins: &mut Vec>, item: &crate::db::Item, ) -> Result<(), anyhow::Error> { @@ -211,7 +211,12 @@ fn finalize_meta_plugins( match meta_plugin.finalize() { Ok(meta_value) => { - if let Err(e) = crate::modes::common::store_item_meta_value(conn, item.clone(), meta_name.clone(), meta_value) { + let meta = crate::db::Meta { + id: item.id.ok_or_else(|| anyhow!("Item missing ID"))?, + name: meta_name.clone(), + value: meta_value, + }; + if let Err(e) = crate::db::store_meta(conn, meta) { eprintln!("Warning: Failed to store meta value for {}: {}", meta_name, e); } } @@ -240,7 +245,7 @@ pub fn mode_save( setup_item_metadata(conn, args, &item, tags)?; // Pass mutable reference // Use a transaction for database operations to ensure atomicity - let tx = conn.transaction()?; + let mut tx = conn.transaction()?; let item_meta = collect_item_meta(args); let item_id = item.id.ok_or_else(|| anyhow!("Item missing ID"))?; @@ -264,8 +269,7 @@ pub fn mode_save( item.size = processed_item.size; item.compression = compression_type.to_string(); - // Pass the transaction as mutable reference - finalize_meta_plugins(&mut tx, &mut meta_plugins, &item)?; + finalize_meta_plugins(&tx, &mut meta_plugins, &item)?; crate::db::update_item(&tx, item.clone())?; // Commit the transaction diff --git a/src/modes/update.rs b/src/modes/update.rs index faaf334..0a70ed0 100644 --- a/src/modes/update.rs +++ b/src/modes/update.rs @@ -36,7 +36,7 @@ pub fn mode_update( debug!("MAIN: Found item {:?}", item); // Use a transaction for database operations to ensure atomicity - let tx = conn.transaction()?; + let mut tx = conn.transaction()?; if !tags.is_empty() { debug!("MAIN: Updating item tags"); @@ -99,9 +99,14 @@ pub fn mode_update( let digest_value = digest_engine.finalize()?; debug!("DIGEST: {}", digest_value); - // Save digest to meta using the common function - // Pass the transaction as mutable reference - store_item_digest_value(&mut tx, item.clone(), digest_type, digest_value)?; + // Save digest to meta + let digest_meta_name = get_digest_type_meta(digest_type); + let digest_meta = db::Meta { + id: item_id, + name: digest_meta_name, + value: digest_value, + }; + db::store_meta(&tx, digest_meta)?; } else { debug!( "MAIN: Unable to update digest of item due to missing file {:?}",