From 6f5c3c3dd4d7555f02940028bf25d7b15dc8313a Mon Sep 17 00:00:00 2001 From: Andrew Phillips Date: Thu, 22 May 2025 16:39:23 -0300 Subject: [PATCH] feat: add meta plugin support to save mode --- src/modes/save.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/modes/save.rs b/src/modes/save.rs index 62c82cf..492a6d3 100644 --- a/src/modes/save.rs +++ b/src/modes/save.rs @@ -14,7 +14,7 @@ use crate::compression_engine::get_compression_engine; use crate::db::{self}; use crate::digest_engine::get_digest_engine; use crate::meta_plugin::{MetaPlugin, MetaPluginType, get_meta_plugin}; -use crate::modes::common::{cmd_args_compression_type, cmd_args_digest_type, cmd_args_meta_plugin_types, get_meta_from_env, store_item_digest_value}; +use crate::modes::common::{cmd_args_compression_type, cmd_args_digest_type, cmd_args_meta_plugin_types, get_meta_from_env, store_item_digest_value, store_item_meta_value}; use chrono::Utc; pub fn mode_save( @@ -141,6 +141,11 @@ pub fn mode_save( stdout.write_all(&buffer[..n])?; item_out.write_all(&buffer[..n])?; digest_engine.update(&buffer[..n]); + + for meta_plugin in meta_plugins.iter() { + meta_plugin.update(&buffer[..n]); + } + item.size = match item.size { None => Some(n as i64), Some(prev_n) => Some(prev_n + n as i64), @@ -155,6 +160,17 @@ pub fn mode_save( debug!("DIGEST: {}", digest); store_item_digest_value(conn, item.clone(), digest_type, digest)?; + + for meta_plugin in meta_plugins.iter() { + let meta_name = meta_plugin.meta_name(); + + // TODO: Add error handling instead of unwrap. + let meta_value = meta_plugin.finalize().unwrap(); + + store_item_meta_value(conn, item.clone(), meta_name, meta_value)?; + } + + db::update_item(conn, item.clone())?; Ok(())