module flow import base import freeflowuniverse.herolib.data.ourtime // enums from flow_enums.v and FlowStep from flow_step.v are used as they are in the same module // Flow represents a complete workflow with multiple steps pub struct Flow { base.Base // For common fields like id, created_at, updated_at pub mut: name string description string flow_type string status FlowStatus current_step_id string // Optional: Based on Option in Rust, storing just ID progress_percentage u8 owner_id string owner_name string data string // Serialized JSON data (jsonb in Rust) steps []FlowStep // current_step is not directly mapped, as it's derived. current_step_id can be used. } // FlowStatus defines the overall status of a flow pub enum FlowStatus { in_progress completed stuck cancelled } // FlowStep represents an individual step within a larger flow pub struct FlowStep { pub mut: id string // UUID, from Uuid::new_v4().to_string() name string description string status StepStatus order u32 started_at ourtime.OurTime // Optional: Option> completed_at ourtime.OurTime // Optional: Option> logs []FlowLog } // StepStatus defines the status of an individual step within a flow pub enum StepStatus { pending in_progress completed stuck skipped } // FlowLog represents a log entry within a flow step pub struct FlowLog { pub mut: timestamp ourtime.OurTime message string }