Skip to main content

Mountain/IPC/StatusReporter/
mountain_get_comprehensive_status.rs

1#![allow(non_snake_case)]
2
3//! `mountain_get_comprehensive_status` Tauri command -
4//! assembles a `ComprehensiveStatusReport::Struct` (basic
5//! status + performance metrics + health) in one call.
6
7use 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		let performance_metrics = reporter.get_performance_metrics()?;
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}