Skip to content

Commit dff2081

Browse files
committed
BugFix: Optional GraphQL fields no longer had the serde(skip_serializing_if = "Option::is_none") option. Also added a unit test for that
1 parent dcdd2c4 commit dff2081

2 files changed

Lines changed: 5 additions & 1 deletion

File tree

lambda-appsync-proc/src/appsync_lambda_main/graphql.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ impl ToTokens for FieldContext<'_> {
195195
}
196196
if field_type.is_optionnal() {
197197
serde_options.push(quote_spanned! {span=>
198-
default
198+
default, skip_serializing_if = "Option::is_none"
199199
});
200200
}
201201
if !serde_options.is_empty() {

lambda-appsync/tests/serde_test.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -187,4 +187,8 @@ fn test_null_handling() {
187187

188188
let optional_team: OptionalTeam = serde_json::from_value(json.clone()).unwrap();
189189
assert_eq!(optional_team.team, Some(Team::Rust));
190+
191+
// Test that null team is not serialized
192+
let optional_team = OptionalTeam { team: None };
193+
assert_eq!(serde_json::to_value(optional_team).unwrap(), json!({}));
190194
}

0 commit comments

Comments
 (0)