use serde::{Deserialize, Serialize};
use salvo::oapi::ToSchema;
#[derive(Debug, Deserialize, ToSchema)]
pub struct RegisterInstanceRequest {
pub app_name: String,
pub instance_id: i64,
pub base_url: String,
pub display_name: Option<String>,
pub version: Option<String>,
}
#[derive(Debug, Deserialize, ToSchema)]
pub struct HeartbeatRequest {
pub instance_id: i64,
}
#[derive(Debug, Deserialize, ToSchema)]
pub struct DeregisterRequest {
pub instance_id: i64,
}
#[derive(Debug, Serialize, Deserialize, Clone, ToSchema)]
pub struct InstanceVO {
pub id: Option<i64>,
pub app_name: Option<String>,
pub instance_id: Option<String>,
pub base_url: Option<String>,
pub version: Option<String>,
pub status: Option<i8>,
pub last_heartbeat_at: Option<String>,
pub registered_at: Option<String>,
}
impl From<crate::domain::entity::app_instance_entity::AppInstanceEntity> for InstanceVO {
fn from(e: crate::domain::entity::app_instance_entity::AppInstanceEntity) -> Self {
Self {
id: e.id,
app_name: e.app_name,
instance_id: e.instance_id.map(|id| id.to_string()),
base_url: e.base_url,
version: e.version,
status: e.status,
last_heartbeat_at: e.last_heartbeat_at.map(|d| d.to_string()),
registered_at: e.registered_at.map(|d| d.to_string()),
}
}
}