use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(
Debug,
Clone,
Serialize,
Deserialize,
PartialEq,
Eq,
JsonSchema,
arbitrary::Arbitrary,
)]
#[serde(untagged)]
#[schemars(rename = "laboratories.Laboratory")]
#[schemars(transform = crate::json_schema::ref_wrapper_object)]
pub enum Laboratory {
#[schemars(title = "Client")]
Client(ClientLaboratory),
#[schemars(title = "Agent")]
Agent(AgentLaboratory),
}
#[derive(
Debug,
Clone,
Serialize,
Deserialize,
PartialEq,
Eq,
JsonSchema,
arbitrary::Arbitrary,
)]
#[schemars(rename = "laboratories.ClientLaboratory")]
pub struct ClientLaboratory {
pub r#type: ClientLaboratoryType,
pub id: String,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub machine: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
#[schemars(extend("omitempty" = true))]
pub machine_state: Option<String>,
}
#[derive(
Debug,
Clone,
Copy,
Serialize,
Deserialize,
PartialEq,
Eq,
Hash,
JsonSchema,
arbitrary::Arbitrary,
)]
#[serde(rename_all = "snake_case")]
#[schemars(rename = "laboratories.ClientLaboratoryType")]
pub enum ClientLaboratoryType {
Client,
}
#[derive(
Debug,
Clone,
Serialize,
Deserialize,
PartialEq,
Eq,
JsonSchema,
arbitrary::Arbitrary,
)]
#[schemars(rename = "laboratories.AgentLaboratory")]
pub struct AgentLaboratory {
pub r#type: AgentLaboratoryType,
pub id: String,
pub agent_full_id: String,
pub laboratory: crate::agent::Laboratory,
}
#[derive(
Debug,
Clone,
Copy,
Serialize,
Deserialize,
PartialEq,
Eq,
Hash,
JsonSchema,
arbitrary::Arbitrary,
)]
#[serde(rename_all = "snake_case")]
#[schemars(rename = "laboratories.AgentLaboratoryType")]
pub enum AgentLaboratoryType {
Agent,
}