From fdf6ff0c9c8d100f05f0f7f467ec04a1e1cb7d20 Mon Sep 17 00:00:00 2001 From: Larko <59736843+Larkooo@users.noreply.github.com> Date: Thu, 27 Feb 2025 01:38:14 +0800 Subject: [PATCH] fix(torii-graphql): option enums in arrays (#3068) --- crates/torii/graphql/src/query/mod.rs | 32 ++++++++++++++------------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/crates/torii/graphql/src/query/mod.rs b/crates/torii/graphql/src/query/mod.rs index cca7ee8816..ab2abd25e7 100644 --- a/crates/torii/graphql/src/query/mod.rs +++ b/crates/torii/graphql/src/query/mod.rs @@ -189,21 +189,23 @@ pub fn value_mapping_from_row( ) { match value { Value::Object(obj) => { - for (field_name, field_value) in obj.iter_mut() { - populate_value( - field_value, - &type_data.type_mapping().unwrap()[field_name], - entity_id, - ); - } - - if type_data.type_mapping().map_or(false, |mapping| { - mapping.contains_key(&Name::new("option")) - }) { - obj.insert( - Name::new("option"), - Value::String(obj.keys().next().unwrap().to_string()), - ); + for (field_name, field_type) in + type_data.type_mapping().unwrap().iter() + { + if let Some(field_value) = obj.get_mut(field_name) { + populate_value(field_value, field_type, entity_id); + } else { + obj.insert( + field_name.clone(), + if field_name == "option" { + Value::String( + obj.keys().next().unwrap().to_string(), + ) + } else { + Value::Null + }, + ); + } } // insert $entity_id$ relation