diff --git a/src/generated_scene/generator.rs b/src/generated_scene/generator.rs index 13ab5f5..610f5b8 100644 --- a/src/generated_scene/generator.rs +++ b/src/generated_scene/generator.rs @@ -20,6 +20,66 @@ pub struct ApiEndpointJson { pub description: Option, } +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +pub struct ModeConditionJson { + pub field: String, + #[serde(default = "default_equals")] + pub operator: String, + pub value: serde_json::Value, +} + +fn default_equals() -> String { + "equals".to_string() +} + +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +pub struct NormalizeRulesJson { + #[serde(rename = "type", default = "default_validate_all")] + pub rules_type: String, + #[serde(default)] + pub required_fields: Vec, + #[serde(default = "default_true")] + pub filter_null: bool, +} + +fn default_validate_all() -> String { + "validate_all_columns".to_string() +} + +fn default_true() -> bool { + true +} + +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +pub struct ApiEndpointEnhancedJson { + pub name: String, + pub url: String, + #[serde(default)] + pub method: String, + #[serde(rename = "contentType", default)] + pub content_type: Option, + #[serde(default)] + pub description: Option, +} + +#[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] +pub struct ModeConfigJson { + pub name: String, + #[serde(default)] + pub label: Option, + pub condition: ModeConditionJson, + #[serde(rename = "apiEndpoint")] + pub api_endpoint: ApiEndpointEnhancedJson, + #[serde(rename = "columnDefs", default)] + pub column_defs: Vec<(String, String)>, + #[serde(rename = "requestTemplate", default)] + pub request_template: Option, + #[serde(rename = "normalizeRules", default)] + pub normalize_rules: Option, + #[serde(rename = "responsePath", default)] + pub response_path: Option, +} + #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] pub struct BusinessLogicJson { #[serde(default)] @@ -52,6 +112,13 @@ pub struct SceneInfoJson { pub entry_method: Option, #[serde(rename = "businessLogic", default)] pub business_logic: Option, + // Multi-mode support (new fields) + #[serde(default)] + pub modes: Vec, + #[serde(rename = "defaultMode", default)] + pub default_mode: Option, + #[serde(rename = "modeSwitchField", default)] + pub mode_switch_field: Option, } #[derive(Debug, Clone)]