pub enum Event {
RunCreated {
run_id: Uuid,
workflow_name: String,
at: DateTime<Utc>,
},
RunStatusChanged {
run_id: Uuid,
workflow_name: String,
from: RunStatus,
to: RunStatus,
error: Option<String>,
cost_usd: Decimal,
duration_ms: u64,
at: DateTime<Utc>,
},
RunFailed {
run_id: Uuid,
workflow_name: String,
error: Option<String>,
cost_usd: Decimal,
duration_ms: u64,
at: DateTime<Utc>,
},
StepCompleted {
run_id: Uuid,
step_id: Uuid,
step_name: String,
kind: StepKind,
duration_ms: u64,
cost_usd: Decimal,
at: DateTime<Utc>,
},
StepFailed {
run_id: Uuid,
step_id: Uuid,
step_name: String,
kind: StepKind,
error: String,
at: DateTime<Utc>,
},
ApprovalRequested {
run_id: Uuid,
step_id: Uuid,
message: String,
at: DateTime<Utc>,
},
ApprovalGranted {
run_id: Uuid,
approved_by: String,
at: DateTime<Utc>,
},
ApprovalRejected {
run_id: Uuid,
rejected_by: String,
at: DateTime<Utc>,
},
LogLine {
run_id: Uuid,
step_id: Uuid,
step_name: String,
stream: LogStream,
line: String,
at: DateTime<Utc>,
},
UserSignedIn {
user_id: Uuid,
username: String,
at: DateTime<Utc>,
},
UserSignedUp {
user_id: Uuid,
username: String,
at: DateTime<Utc>,
},
UserSignedOut {
user_id: Uuid,
at: DateTime<Utc>,
},
}Expand description
A domain event emitted by the ironflow system.
Covers the full lifecycle: runs, steps, approvals, and authentication.
Subscribers receive these via EventPublisher
and pattern-match on the variants they care about.
§Examples
use ironflow_engine::notify::Event;
use ironflow_store::models::RunStatus;
use uuid::Uuid;
let event = Event::RunStatusChanged {
run_id: Uuid::now_v7(),
workflow_name: "deploy".to_string(),
from: RunStatus::Running,
to: RunStatus::Completed,
error: None,
cost_usd: rust_decimal::Decimal::ZERO,
duration_ms: 5000,
at: chrono::Utc::now(),
};Variants§
RunCreated
A new run was created (status: Pending).
Fields
RunStatusChanged
A run changed status.
Fields
RunFailed
A run transitioned to Failed.
This is a convenience event emitted alongside RunStatusChanged
when the target status is Failed. Subscribe to this instead of
RUN_STATUS_CHANGED when you only care about failures.
Fields
StepCompleted
A step completed successfully.
Fields
StepFailed
A step failed.
Fields
ApprovalRequested
A run is waiting for human approval.
Fields
ApprovalGranted
A run was approved by a human.
Fields
ApprovalRejected
A run was rejected by a human.
Fields
LogLine
A log line emitted during step execution.
Pushed by the worker in real time so that SSE clients can stream step output as it happens, without waiting for step completion.
Fields
UserSignedIn
A user signed in.
Fields
UserSignedUp
A new user signed up.
Fields
UserSignedOut
A user signed out.
Implementations§
Source§impl Event
impl Event
Sourcepub const RUN_CREATED: &'static str = "run_created"
pub const RUN_CREATED: &'static str = "run_created"
Event type constant for RunCreated.
Sourcepub const RUN_STATUS_CHANGED: &'static str = "run_status_changed"
pub const RUN_STATUS_CHANGED: &'static str = "run_status_changed"
Event type constant for RunStatusChanged.
Sourcepub const RUN_FAILED: &'static str = "run_failed"
pub const RUN_FAILED: &'static str = "run_failed"
Event type constant for RunFailed.
Sourcepub const STEP_COMPLETED: &'static str = "step_completed"
pub const STEP_COMPLETED: &'static str = "step_completed"
Event type constant for StepCompleted.
Sourcepub const STEP_FAILED: &'static str = "step_failed"
pub const STEP_FAILED: &'static str = "step_failed"
Event type constant for StepFailed.
Sourcepub const APPROVAL_REQUESTED: &'static str = "approval_requested"
pub const APPROVAL_REQUESTED: &'static str = "approval_requested"
Event type constant for ApprovalRequested.
Sourcepub const APPROVAL_GRANTED: &'static str = "approval_granted"
pub const APPROVAL_GRANTED: &'static str = "approval_granted"
Event type constant for ApprovalGranted.
Sourcepub const APPROVAL_REJECTED: &'static str = "approval_rejected"
pub const APPROVAL_REJECTED: &'static str = "approval_rejected"
Event type constant for ApprovalRejected.
Sourcepub const USER_SIGNED_IN: &'static str = "user_signed_in"
pub const USER_SIGNED_IN: &'static str = "user_signed_in"
Event type constant for UserSignedIn.
Sourcepub const USER_SIGNED_UP: &'static str = "user_signed_up"
pub const USER_SIGNED_UP: &'static str = "user_signed_up"
Event type constant for UserSignedUp.
Sourcepub const USER_SIGNED_OUT: &'static str = "user_signed_out"
pub const USER_SIGNED_OUT: &'static str = "user_signed_out"
Event type constant for UserSignedOut.
Sourcepub const ALL: &'static [&'static str]
pub const ALL: &'static [&'static str]
All event types. Pass this to
EventPublisher::subscribe to
receive every event.
§Examples
use ironflow_engine::notify::{Event, EventPublisher, WebhookSubscriber};
let mut publisher = EventPublisher::new();
publisher.subscribe(
WebhookSubscriber::new("https://example.com/all"),
Event::ALL,
);Sourcepub fn event_type(&self) -> &'static str
pub fn event_type(&self) -> &'static str
Returns the event type as a static string (e.g. "run_status_changed").
Useful for filtering and logging without deserializing.
§Examples
use ironflow_engine::notify::Event;
use uuid::Uuid;
use chrono::Utc;
let event = Event::UserSignedIn {
user_id: Uuid::now_v7(),
username: "alice".to_string(),
at: Utc::now(),
};
assert_eq!(event.event_type(), "user_signed_in");