From cfd12a6306618c9938d09f41cfdeb564dcd52ad7 Mon Sep 17 00:00:00 2001 From: Cyborus Date: Thu, 18 Jan 2024 16:27:05 -0500 Subject: [PATCH] add additional properties support --- generator/src/main.rs | 8 ++++++++ generator/src/openapi.rs | 1 + src/generated.rs | 5 ++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/generator/src/main.rs b/generator/src/main.rs index 7bface6..9ffd7e7 100644 --- a/generator/src/main.rs +++ b/generator/src/main.rs @@ -738,6 +738,14 @@ fn create_struct_for_definition( } } + if let Some(additonal_schema) = &schema.additional_properties { + let prop_ty = schema_ref_type_name(spec, additonal_schema)?; + fields.push_str("#[serde(flatten)]\n"); + fields.push_str("pub additional: std::collections::BTreeMap,\n"); + } + let out = format!("{docs}#[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)]\npub struct {name} {{\n{fields}}}\n\n"); Ok(out) } diff --git a/generator/src/openapi.rs b/generator/src/openapi.rs index 79a57d3..5f87f01 100644 --- a/generator/src/openapi.rs +++ b/generator/src/openapi.rs @@ -249,6 +249,7 @@ pub struct Schema { #[serde(rename = "type")] pub _type: Option, pub properties: Option>>, + pub additional_properties: Option>>, pub items: Option>>, pub discriminator: Option, diff --git a/src/generated.rs b/src/generated.rs index 5ef8176..6b972db 100644 --- a/src/generated.rs +++ b/src/generated.rs @@ -7870,7 +7870,10 @@ pub mod structs { /// required are "content_type" and "url" Required /// #[derive(Debug, Clone, PartialEq, serde::Serialize, serde::Deserialize)] - pub struct CreateHookOptionConfig {} + pub struct CreateHookOptionConfig { + #[serde(flatten)] + pub additional: std::collections::BTreeMap, + } /// CreateIssueCommentOption options for creating a comment on an issue ///