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:
Andrew Phillips
2025-08-16 14:04:19 -03:00
parent 4f61306d79
commit a7977139a7
5 changed files with 153 additions and 32 deletions

View File

@@ -1,12 +1,12 @@
use anyhow::Result;
use std::io;
use std::io::Write;
use rusqlite::Connection;
pub mod program;
pub mod digest;
pub mod system;
use crate::meta_plugin::program::MetaPluginProgram;
use crate::meta_plugin::digest::{DigestSha256MetaPlugin, ReadTimeMetaPlugin, ReadRateMetaPlugin};
use crate::meta_plugin::system::{CwdMetaPlugin, BinaryMetaPlugin, UidMetaPlugin, UserMetaPlugin, GidMetaPlugin, GroupMetaPlugin, ShellMetaPlugin, ShellPidMetaPlugin, KeepPidMetaPlugin, HostnameMetaPlugin, FullHostnameMetaPlugin};
@@ -57,6 +57,22 @@ pub trait MetaPlugin {
fn program_info(&self) -> Option<(&str, Vec<&str>)> {
None
}
// Initialize with database connection
fn initialize(&mut self, _conn: &Connection, _item_id: i64) -> Result<()> {
Ok(())
}
// Save metadata to database
fn save_meta(&self, conn: &Connection, item_id: i64, value: String) -> Result<()> {
let meta = crate::db::Meta {
id: item_id,
name: self.meta_name(),
value,
};
crate::db::store_meta(conn, meta)?;
Ok(())
}
}
pub fn get_meta_plugin(meta_plugin_type: MetaPluginType) -> Box<dyn MetaPlugin> {
@@ -83,4 +99,3 @@ pub fn get_meta_plugin(meta_plugin_type: MetaPluginType) -> Box<dyn MetaPlugin>
MetaPluginType::FullHostname => Box::new(FullHostnameMetaPlugin::new()),
}
}