use serde::{Deserialize, Serialize};
use chrono::{DateTime, Utc};
#[derive(Debug, Serialize, Deserialize)]
pub struct ServerResponse {
pub id: u64,
pub name: String,
pub status: String,
pub server_type: String,
pub public_ip: Option<String>,
pub private_ip: Option<String>,
pub created_at: DateTime<Utc>,
pub datacenter: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct ServersListResponse {
pub servers: Vec<ServerResponse>,
pub total: usize,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct NetworkResponse {
pub id: u64,
pub name: String,
pub ip_range: String,
pub servers: Vec<u64>,
pub subnets: Vec<SubnetResponse>,
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct SubnetResponse {
pub ip_range: String,
pub network_zone: String,
pub gateway: String,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct NetworksListResponse {
pub networks: Vec<NetworkResponse>,
pub total: usize,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LoadBalancerResponse {
pub id: u64,
pub name: String,
pub public_ip: String,
pub algorithm: String,
pub targets: Vec<LoadBalancerTargetResponse>,
pub health_status: String,
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LoadBalancerTargetResponse {
pub server_id: u64,
pub server_name: String,
pub health_status: String,
pub use_private_ip: bool,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct LoadBalancersListResponse {
pub load_balancers: Vec<LoadBalancerResponse>,
pub total: usize,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct FirewallResponse {
pub id: u64,
pub name: String,
pub rules_count: usize,
pub applied_to: Vec<FirewallApplicationResponse>,
pub created_at: DateTime<Utc>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct FirewallApplicationResponse {
pub server_id: Option<u64>,
pub server_name: Option<String>,
}
#[derive(Debug, Serialize, Deserialize)]
pub struct FirewallsListResponse {
pub firewalls: Vec<FirewallResponse>,
pub total: usize,
}