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