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>,
},
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>,
},
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
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
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 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");