greentic_flow/
model.rs

1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3use std::collections::BTreeMap;
4
5fn default_parameters() -> Value {
6    Value::Object(Default::default())
7}
8
9#[derive(Debug, Clone, Serialize, Deserialize)]
10pub struct FlowDoc {
11    pub id: String,
12    #[serde(default)]
13    pub title: Option<String>,
14    #[serde(default)]
15    pub description: Option<String>,
16    #[serde(rename = "type")]
17    pub flow_type: String,
18    #[serde(default)]
19    pub start: Option<String>,
20    #[serde(default = "default_parameters")]
21    pub parameters: Value,
22    pub nodes: BTreeMap<String, Node>,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, Default)]
26pub struct Node {
27    #[serde(skip_serializing, skip_deserializing, default)]
28    pub component: String,
29    #[serde(skip_serializing, skip_deserializing, default)]
30    pub payload: Value,
31    #[serde(default)]
32    pub routing: Vec<Route>,
33    #[serde(flatten, default)]
34    pub raw: BTreeMap<String, Value>,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize, Default)]
38pub struct Route {
39    #[serde(default)]
40    pub to: Option<String>,
41    #[serde(default)]
42    pub out: Option<bool>,
43}