Mountain/IPC/WindAirCommands/
GetAirStatus.rs1#![allow(non_snake_case)]
2
3use crate::{
8 IPC::WindAirCommands::{AirServiceStatusDTO, GetAirAddress, GetOrCreateAirClient},
9 dev_log,
10};
11
12#[tauri::command]
13pub async fn GetAirStatus() -> Result<AirServiceStatusDTO::Struct, String> {
14 dev_log!("grpc", "[WindAirCommands] GetAirStatus called");
15
16 let air_address = GetAirAddress::Fn()?;
17
18 let client = GetOrCreateAirClient::Fn(air_address).await?;
19
20 let request_id = uuid::Uuid::new_v4().to_string();
21
22 let status = client
23 .get_status(request_id)
24 .await
25 .map_err(|e| format!("Failed to get Air status: {:?}", e))?;
26
27 let healthy = client.health_check().await.unwrap_or(false);
28
29 let result = AirServiceStatusDTO::Struct {
30 version:status.version,
31
32 uptime_seconds:status.uptime_seconds,
33
34 total_requests:status.total_requests,
35
36 successful_requests:status.successful_requests,
37
38 failed_requests:status.failed_requests,
39
40 active_requests:status.active_requests,
41
42 healthy,
43 };
44
45 dev_log!("grpc", "[WindAirCommands] Air status retrieved: healthy={}", result.healthy);
46
47 Ok(result)
48}