diff --git a/src/common/status.rs b/src/common/status.rs index 1299caa..f5592b9 100644 --- a/src/common/status.rs +++ b/src/common/status.rs @@ -9,13 +9,22 @@ use crate::compression_engine::program::CompressionEngineProgram; use crate::meta_plugin::MetaPluginType; use crate::services::filter_service::get_available_filter_plugins; +use crate::filter_plugin::FilterOption; + +#[derive(serde::Serialize, serde::Deserialize, ToSchema)] +pub struct FilterPluginInfo { + pub name: String, + pub options: Vec, + pub description: String, +} + #[derive(serde::Serialize, serde::Deserialize, ToSchema)] pub struct StatusInfo { pub paths: PathInfo, pub compression: Vec, pub meta_plugins: std::collections::HashMap, pub enabled_meta_plugins: Vec, - pub filter_plugins: Vec, + pub filter_plugins: Vec, pub configured_meta_plugins: Option>, } diff --git a/src/services/status_service.rs b/src/services/status_service.rs index fbe8c3f..e99a993 100644 --- a/src/services/status_service.rs +++ b/src/services/status_service.rs @@ -33,11 +33,23 @@ impl StatusService { let mut status_info = generate_status_info(data_path, db_path, &meta_plugin_types, enabled_compression_type); - // Add filter plugins information - status_info.filter_plugins = get_available_filter_plugins() - .keys() - .map(|name| name.clone()) - .collect(); + // Add detailed filter plugins information + let filter_plugins_map = get_available_filter_plugins(); + let mut filter_plugins_info = Vec::new(); + + for (name, creator) in filter_plugins_map { + let plugin = creator(); + let options = plugin.options(); + // For now, use a default description + let description = "Filter plugin".to_string(); + + filter_plugins_info.push(crate::common::status::FilterPluginInfo { + name, + options, + description, + }); + } + status_info.filter_plugins = filter_plugins_info; // Add configured meta plugins information status_info.configured_meta_plugins = settings.meta_plugins.clone();