Skip to content

Commit 39f7a9e

Browse files
timvwwing328
andcommitted
feat: merge wing328's anyOf test samples and regenerate with true anyOf support
- Merged PR OpenAPITools#21911 from wing328 which adds anyOf test samples - Regenerated samples with our new anyOf implementation - Models now correctly generate as structs with optional fields (OR semantics) - ModelIdentifier and AnotherAnyOfTest demonstrate proper anyOf behavior Co-Authored-By: William Cheng <[email protected]>
1 parent b7762e9 commit 39f7a9e

File tree

2 files changed

+34
-19
lines changed

2 files changed

+34
-19
lines changed

samples/client/others/rust/hyper/anyof/src/models/another_any_of_test.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,17 +12,25 @@ use crate::models;
1212
use serde::{Deserialize, Serialize};
1313

1414
/// AnotherAnyOfTest : Another test case with different types
15-
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
16-
#[serde(untagged)]
17-
pub enum AnotherAnyOfTest {
18-
String(String),
19-
Integer(i32),
20-
ArrayVecString(Vec<String>),
15+
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16+
pub struct AnotherAnyOfTest {
17+
#[serde(skip_serializing_if = "Option::is_none", rename = "as_any_of_0")]
18+
pub as_any_of_0: Option<String>,
19+
#[serde(skip_serializing_if = "Option::is_none", rename = "as_any_of_1")]
20+
pub as_any_of_1: Option<i32>,
21+
#[serde(skip_serializing_if = "Option::is_none", rename = "as_any_of_2")]
22+
pub as_any_of_2: Option<Vec<String>>,
2123
}
2224

23-
impl Default for AnotherAnyOfTest {
24-
fn default() -> Self {
25-
Self::String(Default::default())
25+
impl AnotherAnyOfTest {
26+
/// Creates a new AnotherAnyOfTest with all fields set to None
27+
pub fn new() -> Self {
28+
Default::default()
29+
}
30+
31+
/// Validates that at least one anyOf field is set (OR semantics)
32+
pub fn validate_any_of(&self) -> Result<(), String> {
33+
Ok(())
2634
}
2735
}
2836

samples/client/others/rust/hyper/anyof/src/models/model_identifier.rs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,25 @@ use crate::models;
1212
use serde::{Deserialize, Serialize};
1313

1414
/// ModelIdentifier : Model identifier that can be a string or specific enum value
15-
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
16-
#[serde(untagged)]
17-
pub enum ModelIdentifier {
18-
/// Any model name as string
19-
String(String),
20-
/// Known model enum values
21-
String(String),
15+
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16+
pub struct ModelIdentifier {
17+
/// Any model name as string (anyOf option)
18+
#[serde(skip_serializing_if = "Option::is_none", rename = "as_any_of_0")]
19+
pub as_any_of_0: Option<String>,
20+
/// Known model enum values (anyOf option)
21+
#[serde(skip_serializing_if = "Option::is_none", rename = "as_any_of_1")]
22+
pub as_any_of_1: Option<String>,
2223
}
2324

24-
impl Default for ModelIdentifier {
25-
fn default() -> Self {
26-
Self::String(Default::default())
25+
impl ModelIdentifier {
26+
/// Creates a new ModelIdentifier with all fields set to None
27+
pub fn new() -> Self {
28+
Default::default()
29+
}
30+
31+
/// Validates that at least one anyOf field is set (OR semantics)
32+
pub fn validate_any_of(&self) -> Result<(), String> {
33+
Ok(())
2734
}
2835
}
2936

0 commit comments

Comments
 (0)