Skip to content

Commit 3cf9fe8

Browse files
authored
refactor: reduce the amount of cloning in graphql_args_to_json_args (#5541)
Reduce the amount of cloning in `graphql_args_to_json_args` and `arg_value_to_json` a little bit, only clone what is necessary.
1 parent e25e9a0 commit 3cf9fe8

1 file changed

Lines changed: 14 additions & 14 deletions

File tree

  • query-engine/connector-test-kit-rs/query-tests-setup/src/runner/json_adapter

query-engine/connector-test-kit-rs/query-tests-setup/src/runner/json_adapter/request.rs

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -63,26 +63,26 @@ fn graphql_args_to_json_args(
6363

6464
let mut args: IndexMap<String, JsonValue> = IndexMap::new();
6565

66-
for (arg_name, arg_value) in selection.arguments().iter().cloned() {
67-
let arg_field = args_fields.iter().find(|arg_field| arg_field.name == arg_name);
68-
let inferrer = FieldTypeInferrer::from_field(arg_field).infer(&arg_value);
66+
for (arg_name, arg_value) in selection.arguments() {
67+
let arg_field = args_fields.iter().find(|arg_field| arg_field.name == *arg_name);
68+
let inferrer = FieldTypeInferrer::from_field(arg_field).infer(arg_value);
6969
let json = arg_value_to_json(arg_value, inferrer);
70-
args.insert(arg_name, json);
70+
args.insert(arg_name.to_owned(), json);
7171
}
7272

7373
Some(args)
7474
}
7575

76-
fn arg_value_to_json(value: ArgumentValue, typ: InferredType) -> JsonValue {
76+
fn arg_value_to_json(value: &ArgumentValue, typ: InferredType) -> JsonValue {
7777
match (value, typ) {
7878
(ArgumentValue::Object(obj), InferredType::Object(typ)) => JsonValue::Object(
7979
obj.into_iter()
8080
.map(|(k, v)| {
81-
let field = typ.find_field(&k);
81+
let field = typ.find_field(k);
8282
let inferrer = FieldTypeInferrer::from_field(field);
83-
let inferred_type = inferrer.infer(&v);
83+
let inferred_type = inferrer.infer(v);
8484

85-
(k, arg_value_to_json(v, inferred_type))
85+
(k.to_owned(), arg_value_to_json(v, inferred_type))
8686
})
8787
.collect(),
8888
),
@@ -94,24 +94,24 @@ fn arg_value_to_json(value: ArgumentValue, typ: InferredType) -> JsonValue {
9494
(ArgumentValue::Object(obj), InferredType::Unknown) => {
9595
let obj = obj
9696
.into_iter()
97-
.map(|(k, v)| (k, arg_value_to_json(v, InferredType::Unknown)))
97+
.map(|(k, v)| (k.to_owned(), arg_value_to_json(v, InferredType::Unknown)))
9898
.collect();
9999

100100
JsonValue::Object(obj)
101101
}
102102
(ArgumentValue::Scalar(PrismaValue::Enum(str)), InferredType::JsonNullEnum) => {
103-
make_json_custom_type(custom_types::ENUM, JsonValue::String(str))
103+
make_json_custom_type(custom_types::ENUM, JsonValue::String(str.to_owned()))
104104
}
105105
(ArgumentValue::Scalar(PrismaValue::String(str)), InferredType::Json) => {
106-
serde_json::from_str(&str).unwrap_or_else(|_| panic!("Expected {str} to be JSON."))
106+
serde_json::from_str(str).unwrap_or_else(|_| panic!("Expected {str} to be JSON."))
107107
}
108108
(ArgumentValue::Scalar(pv), InferredType::Unknown) => serde_json::to_value(pv).unwrap(),
109109

110110
(ArgumentValue::List(list), InferredType::List(typ)) => {
111111
let values = list
112-
.into_iter()
112+
.iter()
113113
.map(|val| {
114-
let inferred_typ = FieldTypeInferrer::new(Some(&[typ.clone()])).infer(&val);
114+
let inferred_typ = FieldTypeInferrer::new(Some(std::slice::from_ref(&typ))).infer(val);
115115

116116
arg_value_to_json(val, inferred_typ)
117117
})
@@ -120,7 +120,7 @@ fn arg_value_to_json(value: ArgumentValue, typ: InferredType) -> JsonValue {
120120
JsonValue::Array(values)
121121
}
122122
(ArgumentValue::List(list), InferredType::Unknown) => JsonValue::Array(
123-
list.into_iter()
123+
list.iter()
124124
.map(|val| arg_value_to_json(val, InferredType::Unknown))
125125
.collect_vec(),
126126
),

0 commit comments

Comments
 (0)