feat: add unified status service implementation
Co-authored-by: aider (openai/andrew/openrouter/deepseek/deepseek-chat-v3.1) <aider@aider.chat>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
use crate::common::status::{generate_status_info, StatusInfo};
|
||||
use crate::config::Settings;
|
||||
use crate::meta_plugin::MetaPluginType;
|
||||
use crate::compression_engine::CompressionType;
|
||||
use clap::Command;
|
||||
use std::path::PathBuf;
|
||||
|
||||
pub struct StatusService;
|
||||
|
||||
impl StatusService {
|
||||
pub fn new() -> Self {
|
||||
Self
|
||||
}
|
||||
|
||||
pub fn generate_status(
|
||||
&self,
|
||||
cmd: &mut Command,
|
||||
settings: &Settings,
|
||||
data_path: PathBuf,
|
||||
db_path: PathBuf,
|
||||
) -> StatusInfo {
|
||||
// Determine which meta plugins would be enabled for a save operation
|
||||
let mut meta_plugin_types: Vec<MetaPluginType> = crate::modes::common::settings_meta_plugin_types(cmd, settings);
|
||||
|
||||
// Always add the Digest plugin if not present
|
||||
if !meta_plugin_types.contains(&MetaPluginType::Digest) {
|
||||
meta_plugin_types.push(MetaPluginType::Digest);
|
||||
}
|
||||
|
||||
// Determine which compression type would be enabled for a save operation
|
||||
let enabled_compression_type = if let Some(compression_name) = &settings.compression() {
|
||||
CompressionType::from_str(compression_name).ok()
|
||||
} else {
|
||||
Some(crate::compression_engine::default_compression_type())
|
||||
};
|
||||
|
||||
generate_status_info(data_path, db_path, &meta_plugin_types, enabled_compression_type)
|
||||
}
|
||||
|
||||
pub fn generate_supported_status(
|
||||
&self,
|
||||
data_path: PathBuf,
|
||||
db_path: PathBuf,
|
||||
) -> StatusInfo {
|
||||
// Get all meta plugin types that are supported
|
||||
let supported_meta_plugins: Vec<MetaPluginType> = MetaPluginType::iter()
|
||||
.filter(|mpt| {
|
||||
let plugin = crate::meta_plugin::get_meta_plugin((*mpt).clone(), None, None);
|
||||
plugin.is_supported()
|
||||
})
|
||||
.collect();
|
||||
|
||||
// Default to LZ4 compression for the API status endpoint
|
||||
let enabled_compression_type = Some(CompressionType::LZ4);
|
||||
|
||||
generate_status_info(data_path, db_path, &supported_meta_plugins, enabled_compression_type)
|
||||
}
|
||||
}
|
||||
|
||||
impl Default for StatusService {
|
||||
fn default() -> Self {
|
||||
Self::new()
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user