use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::entities::{
docker::{service::SwarmServiceListItem, task::SwarmTaskListItem},
swarm::SwarmState,
};
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct SwarmStackListItem {
#[serde(rename = "Name")]
pub name: Option<String>,
#[serde(rename = "State")]
pub state: Option<SwarmState>,
#[serde(rename = "Services")]
pub services: Option<String>,
#[serde(rename = "Orchestrator")]
pub orchestrator: Option<String>,
#[serde(rename = "Namespace")]
pub namespace: Option<String>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct SwarmStack {
#[serde(rename = "Name")]
pub name: String,
#[serde(rename = "State")]
pub state: SwarmState,
#[serde(rename = "Services")]
pub services: Vec<SwarmServiceListItem>,
#[serde(rename = "Tasks")]
pub tasks: Vec<SwarmTaskListItem>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct SwarmStackServiceListItem {
#[serde(rename = "ID")]
pub id: Option<String>,
}
#[typeshare]
#[derive(
Debug, Clone, Default, PartialEq, Serialize, Deserialize,
)]
#[cfg_attr(feature = "utoipa", derive(utoipa::ToSchema))]
pub struct SwarmStackTaskListItem {
#[serde(rename = "ID")]
pub id: Option<String>,
#[serde(rename = "CurrentState")]
pub current_state: Option<String>,
#[serde(rename = "DesiredState")]
pub desired_state: Option<String>,
}