use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct WorkflowExecutionEvent {
#[serde(rename = "action", skip_serializing_if = "Option::is_none")]
pub action: Option<Action>,
#[serde(rename = "status", skip_serializing_if = "Option::is_none")]
pub status: Option<Status>,
#[serde(rename = "nodeId", skip_serializing_if = "Option::is_none")]
pub node_id: Option<String>,
#[serde(rename = "nodeType", skip_serializing_if = "Option::is_none")]
pub node_type: Option<String>,
#[serde(rename = "sourceHandle", skip_serializing_if = "Option::is_none")]
pub source_handle: Option<String>,
#[serde(rename = "durationMs", skip_serializing_if = "Option::is_none")]
pub duration_ms: Option<i32>,
#[serde(rename = "errorMessage", skip_serializing_if = "Option::is_none")]
pub error_message: Option<String>,
#[serde(rename = "meta", skip_serializing_if = "Option::is_none")]
pub meta: Option<std::collections::HashMap<String, serde_json::Value>>,
#[serde(rename = "at", skip_serializing_if = "Option::is_none")]
pub at: Option<String>,
}
impl WorkflowExecutionEvent {
pub fn new() -> WorkflowExecutionEvent {
WorkflowExecutionEvent {
action: None,
status: None,
node_id: None,
node_type: None,
source_handle: None,
duration_ms: None,
error_message: None,
meta: None,
at: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Action {
#[serde(rename = "execution_started")]
ExecutionStarted,
#[serde(rename = "execution_completed")]
ExecutionCompleted,
#[serde(rename = "execution_exited")]
ExecutionExited,
#[serde(rename = "execution_paused")]
ExecutionPaused,
#[serde(rename = "execution_resumed")]
ExecutionResumed,
#[serde(rename = "node_started")]
NodeStarted,
#[serde(rename = "node_completed")]
NodeCompleted,
#[serde(rename = "node_failed")]
NodeFailed,
#[serde(rename = "node_skipped")]
NodeSkipped,
}
impl Default for Action {
fn default() -> Action {
Self::ExecutionStarted
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Status {
#[serde(rename = "success")]
Success,
#[serde(rename = "failed")]
Failed,
#[serde(rename = "pending")]
Pending,
}
impl Default for Status {
fn default() -> Status {
Self::Success
}
}