use derive_empty_traits::EmptyTraits;
use resolver_api::derive::Request;
use serde::{Deserialize, Serialize};
use typeshare::typeshare;
use crate::entities::procedure::{
Procedure, ProcedureActionState, ProcedureListItem, ProcedureQuery,
};
use super::MonitorReadRequest;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(GetProcedureResponse)]
pub struct GetProcedure {
#[serde(alias = "id", alias = "name")]
pub procedure: String,
}
#[typeshare]
pub type GetProcedureResponse = Procedure;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListProceduresResponse)]
pub struct ListProcedures {
#[serde(default)]
pub query: ProcedureQuery,
}
#[typeshare]
pub type ListProceduresResponse = Vec<ProcedureListItem>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Default, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(ListFullProceduresResponse)]
pub struct ListFullProcedures {
#[serde(default)]
pub query: ProcedureQuery,
}
#[typeshare]
pub type ListFullProceduresResponse = Vec<Procedure>;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(GetProcedureActionStateResponse)]
pub struct GetProcedureActionState {
#[serde(alias = "id", alias = "name")]
pub procedure: String,
}
#[typeshare]
pub type GetProcedureActionStateResponse = ProcedureActionState;
#[typeshare]
#[derive(
Serialize, Deserialize, Debug, Clone, Request, EmptyTraits,
)]
#[empty_traits(MonitorReadRequest)]
#[response(GetProceduresSummaryResponse)]
pub struct GetProceduresSummary {}
#[typeshare]
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct GetProceduresSummaryResponse {
pub total: u32,
pub ok: u32,
pub running: u32,
pub failed: u32,
pub unknown: u32,
}