1pub mod artifact;
8pub mod condition;
10pub mod error_behavior;
12pub mod event;
14pub mod execution_error;
16pub mod execution_pointer;
18pub mod execution_result;
20pub mod lifecycle;
22pub mod poll_config;
24pub mod queue_type;
26pub mod scheduled_command;
28pub mod schema;
30pub mod service;
32pub mod status;
34pub mod workflow_definition;
36pub mod workflow_instance;
38
39pub use condition::{ComparisonOp, FieldComparison, StepCondition};
40pub use error_behavior::ErrorBehavior;
41pub use event::{Event, EventSubscription};
42pub use execution_error::ExecutionError;
43pub use execution_pointer::ExecutionPointer;
44pub use execution_result::ExecutionResult;
45pub use lifecycle::{LifecycleEvent, LifecycleEventType};
46pub use poll_config::{HttpMethod, PollCondition, PollEndpointConfig};
47pub use queue_type::QueueType;
48pub use scheduled_command::{CommandName, ScheduledCommand};
49pub use schema::{SchemaType, WorkflowSchema};
50pub use service::{
51 ReadinessCheck, ReadinessProbe, ServiceDefinition, ServiceEndpoint, ServicePort,
52};
53pub use status::{PointerStatus, WorkflowStatus};
54pub use workflow_definition::{SharedVolume, StepOutcome, WorkflowDefinition, WorkflowStep};
55pub use workflow_instance::WorkflowInstance;
56pub use artifact::{
57 ArtifactBlob, ArtifactRef, ARTIFACT_REF_KEY, MEDIA_TYPE_OCI_LAYER_GZIP,
58 MEDIA_TYPE_OCI_LAYER_TAR, artifact_ref_value, is_artifact_ref, parse_artifact_ref,
59};
60
61pub(crate) mod option_duration_millis {
63 use std::time::Duration;
64
65 use serde::{Deserialize, Deserializer, Serializer};
66
67pub fn serialize<S: Serializer>(
69 duration: &Option<Duration>,
70 serializer: S,
71 ) -> Result<S::Ok, S::Error> {
72 match duration {
73 Some(d) => serializer.serialize_some(&(d.as_millis() as u64)),
74 None => serializer.serialize_none(),
75 }
76 }
77
78pub fn deserialize<'de, D: Deserializer<'de>>(
80 deserializer: D,
81 ) -> Result<Option<Duration>, D::Error> {
82 let millis: Option<u64> = Option::deserialize(deserializer)?;
83 Ok(millis.map(Duration::from_millis))
84 }
85}
86
87pub(crate) mod duration_millis {
89 use std::time::Duration;
90
91 use serde::{Deserialize, Deserializer, Serializer};
92
93pub fn serialize<S: Serializer>(duration: &Duration, serializer: S) -> Result<S::Ok, S::Error> {
95 serializer.serialize_u64(duration.as_millis() as u64)
96 }
97
98pub fn deserialize<'de, D: Deserializer<'de>>(deserializer: D) -> Result<Duration, D::Error> {
100 let millis = u64::deserialize(deserializer)?;
101 Ok(Duration::from_millis(millis))
102 }
103}