use std::collections::BTreeMap;
use serde::{Deserialize, Serialize};
use crate::ids::SpaceName;
use crate::metadata::Labels;
#[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
#[non_exhaustive]
#[serde(tag = "type", content = "value", rename_all = "snake_case")]
pub enum RunKind {
Training,
Inference,
OfflineEval,
DriftCheck,
Import,
Workflow,
Remediation,
External(String),
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, schemars::JsonSchema)]
#[cfg_attr(feature = "server", derive(utoipa::ToSchema))]
pub struct RunRef {
pub uid: String,
pub kind: RunKind,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub space: Option<SpaceName>,
#[serde(default, skip_serializing_if = "BTreeMap::is_empty")]
pub labels: Labels,
}