CI / Check (push) Has been skipped
CI / Detect Changes (push) Successful in 6s
CI / Deploy Agent (push) Successful in 4m8s
CI / Deploy Dashboard (push) Successful in 4m58s
CI / Deploy Docs (push) Has been skipped
CI / Deploy MCP (push) Has been skipped
31 lines
925 B
Rust
31 lines
925 B
Rust
use dioxus::prelude::*;
|
|
use serde::{Deserialize, Serialize};
|
|
|
|
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
|
|
pub struct OverviewStats {
|
|
pub total_repositories: u64,
|
|
pub total_findings: u64,
|
|
pub critical_findings: u64,
|
|
pub high_findings: u64,
|
|
pub medium_findings: u64,
|
|
pub low_findings: u64,
|
|
pub total_sbom_entries: u64,
|
|
pub total_cve_alerts: u64,
|
|
pub total_issues: u64,
|
|
}
|
|
|
|
#[server]
|
|
pub async fn fetch_overview_stats() -> Result<OverviewStats, ServerFnError> {
|
|
let resp = super::agent_client::agent_get("/api/v1/stats/overview")
|
|
.await?
|
|
.send()
|
|
.await
|
|
.map_err(|e| ServerFnError::new(e.to_string()))?;
|
|
let body: serde_json::Value = resp
|
|
.json()
|
|
.await
|
|
.map_err(|e| ServerFnError::new(e.to_string()))?;
|
|
let stats: OverviewStats = serde_json::from_value(body["data"].clone()).unwrap_or_default();
|
|
Ok(stats)
|
|
}
|