use crate::control_api::protocol::common::ConnectionStatus;
use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
#[derive(Debug, Serialize, Deserialize, ToSchema)]
#[serde(rename_all = "kebab-case")]
pub struct CreateRelayRequest {
pub name: Option<String>,
#[schema(example = "/project/default")]
pub to: String,
pub address: Option<String>,
#[schema(example = "Id3b788c6a89de8b1f2fd13743eb3123178cf6ec7c9253be8ddcf7e154abe016a")]
pub authorized: Option<String>,
}
#[derive(Debug, Serialize, Deserialize, ToSchema)]
#[serde(rename_all = "kebab-case")]
pub struct RelayStatus {
pub name: String,
pub to: String,
pub remote_address: Option<String>,
pub status: ConnectionStatus,
}
impl From<crate::nodes::models::relay::RelayInfo> for RelayStatus {
fn from(info: crate::nodes::models::relay::RelayInfo) -> Self {
Self {
name: info.name,
to: info.destination_address.to_string(),
remote_address: info.remote_address.map(|addr| addr.to_string()),
status: info.connection_status.into(),
}
}
}