use derive_empty_traits::EmptyTraits;
use resolver_api::derive::Request;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::entities::{
deployment::{
Deployment, DeploymentActionState, DeploymentListItem,
DeploymentQuery, DeploymentState,
},
docker::container::{ContainerListItem, ContainerStats},
update::Log,
SearchCombinator, I64, U64,
};
use super::KomodoReadRequest;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetDeploymentResponse)]
pub struct GetDeployment {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
pub type GetDeploymentResponse = Deployment;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListDeploymentsResponse)]
pub struct ListDeployments {
#[serde(default)]
pub query: DeploymentQuery,
}
#[typeshare]
pub type ListDeploymentsResponse = Vec<DeploymentListItem>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListFullDeploymentsResponse)]
pub struct ListFullDeployments {
#[serde(default)]
pub query: DeploymentQuery,
}
#[typeshare]
pub type ListFullDeploymentsResponse = Vec<Deployment>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetDeploymentContainerResponse)]
pub struct GetDeploymentContainer {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct GetDeploymentContainerResponse {
pub state: DeploymentState,
pub container: Option<ContainerListItem>,
}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetDeploymentLogResponse)]
pub struct GetDeploymentLog {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
#[serde(default = "default_tail")]
pub tail: U64,
#[serde(default)]
pub timestamps: bool,
}
fn default_tail() -> u64 {
50
}
#[typeshare]
pub type GetDeploymentLogResponse = Log;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(SearchDeploymentLogResponse)]
pub struct SearchDeploymentLog {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
pub terms: Vec<String>,
#[serde(default)]
pub combinator: SearchCombinator,
#[serde(default)]
pub invert: bool,
#[serde(default)]
pub timestamps: bool,
}
#[typeshare]
pub type SearchDeploymentLogResponse = Log;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetDeploymentStatsResponse)]
pub struct GetDeploymentStats {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
pub type GetDeploymentStatsResponse = ContainerStats;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(DeploymentActionState)]
pub struct GetDeploymentActionState {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
pub type GetDeploymentActionStateResponse = DeploymentActionState;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(GetDeploymentsSummaryResponse)]
pub struct GetDeploymentsSummary {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct GetDeploymentsSummaryResponse {
pub total: I64,
pub running: I64,
pub stopped: I64,
pub not_deployed: I64,
pub unhealthy: I64,
pub unknown: I64,
}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(KomodoReadRequest)]
#[response(ListCommonDeploymentExtraArgsResponse)]
pub struct ListCommonDeploymentExtraArgs {
#[serde(default)]
pub query: DeploymentQuery,
}
#[typeshare]
pub type ListCommonDeploymentExtraArgsResponse = Vec<String>;