use serde::{Deserialize, Serialize};
use crate::matrix::MatrixStrategy;
use crate::model::{FailureMode, Mitigation, Rescore};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum Event {
SessionOpened {
session_id: String,
#[serde(default)]
matrix_strategy: MatrixStrategy,
},
FailureModeAdded { failure_mode: Box<FailureMode> },
MitigationAdded { mitigation: Box<Mitigation> },
Rescored { rescore: Box<Rescore> },
}
impl Event {
pub fn session_id(&self) -> &str {
match self {
Event::SessionOpened { session_id, .. } => session_id,
Event::FailureModeAdded { failure_mode } => &failure_mode.session_id,
Event::MitigationAdded { mitigation } => &mitigation.session_id,
Event::Rescored { rescore } => &rescore.session_id,
}
}
}