use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Clone)]
pub struct PortInfo {
pub port: u16,
pub pid: Option<String>,
pub local_addr: String,
pub remote_addr: String,
pub state: String,
pub process: String,
}
#[derive(Serialize, Deserialize)]
pub struct PortsResponse {
pub ports: Vec<PortInfo>,
}
#[derive(Serialize, Deserialize)]
pub struct SystemctlService {
pub name: String,
pub status: String,
pub active: bool,
pub enabled: bool,
}
#[derive(Serialize, Deserialize)]
pub struct SystemctlResponse {
pub services: Vec<SystemctlService>,
}
#[derive(Serialize, Deserialize)]
pub struct Pm2Process {
pub name: String,
pub pid: Option<u32>,
pub status: String,
pub cpu: Option<f64>,
pub memory: Option<f64>,
pub uptime: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct Pm2Response {
pub processes: Vec<Pm2Process>,
}
#[derive(Serialize, Deserialize)]
pub struct ServiceInfo {
pub name: String,
pub target: String,
pub port: u16,
pub branch: String,
pub url: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct ServicesResponse {
pub services: Vec<ServiceInfo>,
}
#[derive(Serialize, Deserialize)]
pub struct BinaryDownloadRequest {
pub url: String,
pub name: String,
pub args: Option<Vec<String>>,
}
#[derive(Serialize, Deserialize)]
pub struct BinaryDownloadResponse {
pub success: bool,
pub message: String,
pub pm2_name: Option<String>,
}
#[derive(Serialize, Deserialize)]
pub struct ErrorResponse {
pub error: String,
}
#[derive(Serialize, Deserialize)]
pub struct HealthResponse {
pub status: String,
pub version: String,
}