butterflow_models/
state.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4use ts_rs::TS;
5#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, JsonSchema, TS)]
7#[serde(rename_all = "lowercase")]
8pub enum StateSchemaType {
9 Array,
11
12 Object,
14
15 String,
17
18 Number,
20
21 Boolean,
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, TS)]
27pub struct StateSchemaProperty {
28 pub r#type: StateSchemaType,
30
31 #[serde(default)]
33 #[ts(optional=nullable)]
34 pub description: Option<String>,
35}
36
37#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, TS)]
39pub struct StateSchema {
40 pub name: String,
42
43 pub r#type: StateSchemaType,
45
46 #[serde(default)]
48 #[ts(optional=nullable)]
49 pub items: Option<Box<StateSchemaItems>>,
50
51 #[serde(default)]
53 #[ts(optional=nullable)]
54 pub description: Option<String>,
55}
56
57#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, TS)]
59pub struct StateSchemaItems {
60 pub r#type: StateSchemaType,
62
63 #[serde(default)]
65 #[ts(optional=nullable)]
66 pub properties: Option<HashMap<String, StateSchemaProperty>>,
67}