wakflo_form/formschema/
struct_type.rs

1use crate::formschema::types::FumeFieldSchema;
2use crate::formschema::{FumeBaseSchema, FumeFieldTypes};
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6fn value_default() -> FumeFieldTypes {
7    FumeFieldTypes::Object
8}
9
10// Represents a struct type. A struct type contains a fix set of defined properties
11#[derive(PartialEq, Eq, Serialize, Deserialize, Clone, Debug, Default)]
12pub struct FumeObjectSchema {
13    #[serde(flatten)]
14    pub base: FumeBaseSchema<HashMap<String, serde_json::Value>>,
15    #[serde(alias = "type", rename(serialize = "type"), default = "value_default")]
16    pub _type: FumeFieldTypes,
17    #[serde(rename = "flat")]
18    pub flat: Option<bool>,
19    #[serde(rename = "fields")]
20    pub fields: Vec<FumeFieldSchema>,
21}
22
23impl std::ops::Deref for FumeObjectSchema {
24    type Target = FumeBaseSchema<HashMap<String, serde_json::Value>>;
25    fn deref(&self) -> &Self::Target {
26        &self.base
27    }
28}
29
30pub type FormSchema = FumeObjectSchema;