refactor: move meta plugin finalization logic into meta plugins
Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat>
This commit is contained in:
@@ -150,6 +150,7 @@ fn process_input_stream(
|
||||
data_path: &std::path::PathBuf,
|
||||
item_id: i64,
|
||||
meta_plugins: &mut Vec<Box<dyn crate::meta_plugin::MetaPlugin>>,
|
||||
conn: &rusqlite::Connection,
|
||||
) -> Result<(Box<dyn std::io::Write>, crate::db::Item), anyhow::Error> {
|
||||
let mut item = crate::db::Item {
|
||||
id: Some(item_id),
|
||||
@@ -194,39 +195,26 @@ fn process_input_stream(
|
||||
}
|
||||
debug!("MAIN: Ending IO loop after {:?} bytes", item.size);
|
||||
|
||||
// Finalize meta plugins and save their metadata
|
||||
for meta_plugin in meta_plugins.iter_mut() {
|
||||
match meta_plugin.finalize() {
|
||||
Ok(value) => {
|
||||
if let Err(e) = meta_plugin.save_meta(conn, item_id, value) {
|
||||
eprintln!("Warning: Failed to save meta value: {}", e);
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("Warning: Failed to finalize meta plugin: {}", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
stdout.flush()?;
|
||||
item_out.flush()?;
|
||||
|
||||
Ok((item_out, item))
|
||||
}
|
||||
|
||||
fn finalize_meta_plugins(
|
||||
conn: &rusqlite::Connection,
|
||||
meta_plugins: &mut Vec<Box<dyn crate::meta_plugin::MetaPlugin>>,
|
||||
item: &crate::db::Item,
|
||||
) -> Result<(), anyhow::Error> {
|
||||
for meta_plugin in meta_plugins.iter_mut() {
|
||||
let meta_name = meta_plugin.meta_name();
|
||||
|
||||
match meta_plugin.finalize() {
|
||||
Ok(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);
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
eprintln!("Warning: Failed to finalize meta plugin {}: {}", meta_name, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
pub fn mode_save(
|
||||
cmd: &mut Command,
|
||||
settings: &config::Settings,
|
||||
@@ -257,17 +245,24 @@ pub fn mode_save(
|
||||
crate::db::store_meta(conn, meta)?;
|
||||
}
|
||||
|
||||
// Initialize meta plugins with database connection
|
||||
for meta_plugin in meta_plugins.iter_mut() {
|
||||
if let Err(e) = meta_plugin.initialize(conn, item_id) {
|
||||
eprintln!("Warning: Failed to initialize meta plugin: {}", e);
|
||||
}
|
||||
}
|
||||
|
||||
let (_item_out, processed_item) = process_input_stream(
|
||||
&compression_engine,
|
||||
&data_path,
|
||||
item_id,
|
||||
&mut meta_plugins,
|
||||
conn,
|
||||
)?;
|
||||
|
||||
item.size = processed_item.size;
|
||||
item.compression = compression_type.to_string();
|
||||
|
||||
finalize_meta_plugins(conn, &mut meta_plugins, &item)?;
|
||||
crate::db::update_item(conn, item.clone())?;
|
||||
|
||||
Ok(())
|
||||
|
||||
Reference in New Issue
Block a user