use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use crate::ids::PrintId;
use crate::timestamp::Timestamp;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema)]
#[serde(rename_all = "snake_case", deny_unknown_fields)]
pub enum SessionPhase {
Created,
Continued,
}
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, JsonSchema)]
#[serde(deny_unknown_fields)]
pub struct SupervisionSession {
pub print_id: PrintId,
pub session_name: String,
pub harness_identity: String,
pub created_at: Timestamp,
pub last_turn_at: Timestamp,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub closed_at: Option<Timestamp>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub close_reason: Option<String>,
}