db/specs/modelsold/flow/flow.v

59 lines
1.5 KiB
V

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<FlowStep> 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<DateTime<Utc>>
completed_at ourtime.OurTime // Optional: Option<DateTime<Utc>>
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
}