use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use ts_rs::TS;
use uuid::Uuid;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, TS)]
pub enum DiffOperation {
Add,
Update,
Remove,
Append,
}
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
pub struct FieldDiff {
pub operation: DiffOperation,
pub value: Option<serde_json::Value>,
}
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
pub struct WorkflowRunDiff {
pub workflow_run_id: Uuid,
pub fields: HashMap<String, FieldDiff>,
}
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
pub struct TaskDiff {
pub task_id: Uuid,
pub fields: HashMap<String, FieldDiff>,
}
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
pub struct StateDiff {
pub workflow_run_id: Uuid,
pub fields: HashMap<String, FieldDiff>,
}