feat: add central metadata output handler

Co-authored-by: aider (openai/andrew/openrouter/qwen/qwen3-coder) <aider@aider.chat>
This commit is contained in:
Andrew Phillips
2025-08-18 10:51:58 -03:00
parent ecd3e316c5
commit 7f28129c00
4 changed files with 64 additions and 54 deletions

View File

@@ -38,6 +38,19 @@ pub enum MetaPluginType {
FullHostname,
}
/// Central function to handle metadata output with name mapping
pub fn output_metadata(conn: &Connection, item_id: i64, name: &str, value: String, output_names: &std::collections::HashMap<String, String>) -> Result<()> {
let output_name = output_names.get(name).cloned().unwrap_or_else(|| name.to_string());
debug!("META: Saving metadata: item_id={}, name={}, value={}", item_id, output_name, value);
let meta = crate::db::Meta {
id: item_id,
name: output_name,
value,
};
crate::db::store_meta(conn, meta)?;
Ok(())
}
pub trait MetaPlugin {
fn is_supported(&self) -> bool {
true
@@ -64,17 +77,11 @@ pub trait MetaPlugin {
Ok(())
}
// Save metadata to database
// Save metadata to database using central output handler
fn save_meta(&mut self, conn: &Connection, item_id: i64, value: String) -> Result<()> {
let meta_name = self.meta_name();
debug!("META: Saving metadata: item_id={}, name={}, value={}", item_id, meta_name, value);
let meta = crate::db::Meta {
id: item_id,
name: meta_name,
value,
};
crate::db::store_meta(conn, meta)?;
Ok(())
// Default implementation: no output name mapping
output_metadata(conn, item_id, &meta_name, value, &std::collections::HashMap::new())
}
// Configure plugin with options