Skip to main content

Mountain/IPC/StatusReporter/
mountain_get_comprehensive_status.rs

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