Skip to main content

nexus/dashboard/
types.rs

1//! Type definitions for dashboard data structures
2
3use serde::{Deserialize, Serialize};
4
5/// Entry in the request history ring buffer
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct HistoryEntry {
8    /// Unix timestamp in seconds
9    pub timestamp: u64,
10    /// Model name requested
11    pub model: String,
12    /// Backend ID that handled the request
13    pub backend_id: String,
14    /// Request duration in milliseconds
15    pub duration_ms: u64,
16    /// Request outcome
17    pub status: RequestStatus,
18    /// Error message if status is Error
19    pub error_message: Option<String>,
20}
21
22/// Status of a completed request
23#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
24pub enum RequestStatus {
25    Success,
26    Error,
27}
28
29/// WebSocket update message sent to dashboard clients
30#[derive(Debug, Clone, Serialize, Deserialize)]
31pub struct WebSocketUpdate {
32    /// Type of update
33    pub update_type: UpdateType,
34    /// JSON payload for the update
35    pub data: serde_json::Value,
36}
37
38/// Type of WebSocket update
39#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
40pub enum UpdateType {
41    /// Backend health status changed
42    BackendStatus,
43    /// Request completed
44    RequestComplete,
45    /// Model availability changed
46    ModelChange,
47}