use derive_empty_traits::EmptyTraits;
use resolver_api::derive::Request;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::entities::{
deployment::{
ContainerSummary, Deployment, DeploymentActionState,
DeploymentListItem, DeploymentQuery, DeploymentState,
DockerContainerStats,
},
update::Log,
SearchCombinator, I64, U64,
};
use super::MonitorReadRequest;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[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(MonitorReadRequest)]
#[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(MonitorReadRequest)]
#[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(MonitorReadRequest)]
#[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<ContainerSummary>,
}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(GetLogResponse)]
pub struct GetLog {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
#[serde(default = "default_tail")]
pub tail: U64,
}
fn default_tail() -> u64 {
50
}
#[typeshare]
pub type GetLogResponse = Log;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(SearchLogResponse)]
pub struct SearchLog {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
pub terms: Vec<String>,
#[serde(default)]
pub combinator: SearchCombinator,
#[serde(default)]
pub invert: bool,
}
#[typeshare]
pub type SearchLogResponse = Log;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(GetDeploymentStatsResponse)]
pub struct GetDeploymentStats {
#[serde(alias = "id", alias = "name")]
pub deployment: String,
}
#[typeshare]
pub type GetDeploymentStatsResponse = DockerContainerStats;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[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(MonitorReadRequest)]
#[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 unknown: I64,
}
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListCommonDeploymentExtraArgsResponse)]
pub struct ListCommonDeploymentExtraArgs {
#[serde(default)]
pub query: DeploymentQuery,
}
#[typeshare]
pub type ListCommonDeploymentExtraArgsResponse = Vec<String>;