Mountain/IPC/StatusReporter/
mountain_get_comprehensive_status.rs1use std::time::SystemTime;
6
7use tauri::Manager;
8
9use crate::{
10 IPC::StatusReporter::{
11 ComprehensiveStatusReport::Struct as ComprehensiveStatusReport,
12 Reporter::Struct as Reporter,
13 },
14 dev_log,
15};
16
17#[tauri::command]
18pub async fn mountain_get_comprehensive_status(
19 app_handle:tauri::AppHandle,
20) -> Result<ComprehensiveStatusReport, String> {
21 dev_log!("lifecycle", "Tauri command: get_comprehensive_status");
22
23 if let Some(reporter) = app_handle.try_state::<Reporter>() {
24 let basic_status = reporter.generate_status_report().await?;
25
26 let performance_metrics = reporter.get_performance_metrics()?;
27
28 let health_status = reporter.get_health_status()?;
29
30 Ok(ComprehensiveStatusReport {
31 basic_status,
32 performance_metrics,
33 health_status,
34 timestamp:SystemTime::now()
35 .duration_since(SystemTime::UNIX_EPOCH)
36 .unwrap_or_default()
37 .as_millis() as u64,
38 })
39 } else {
40 Err("StatusReporter not found in application state".to_string())
41 }
42}