Skip to content

Commit 66a6aaa

Browse files
committed
graphql: Pass a schema, not the query, to coerce_argument_values
1 parent b0aa676 commit 66a6aaa

File tree

4 files changed

+15
-12
lines changed

4 files changed

+15
-12
lines changed

graphql/src/execution/execution.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -554,7 +554,7 @@ fn execute_field(
554554
field: &a::Field,
555555
field_definition: &s::Field,
556556
) -> Result<r::Value, Vec<QueryExecutionError>> {
557-
coerce_argument_values(&ctx.query, object_type, field)
557+
coerce_argument_values(&ctx.query.schema, object_type, field)
558558
.and_then(|argument_values| {
559559
resolve_field_value(
560560
ctx,
@@ -895,14 +895,14 @@ fn resolve_abstract_type<'a>(
895895

896896
/// Coerces argument values into GraphQL values.
897897
pub fn coerce_argument_values<'a>(
898-
query: &crate::execution::Query,
898+
schema: &ApiSchema,
899899
ty: impl Into<ObjectOrInterface<'a>>,
900900
field: &a::Field,
901901
) -> Result<HashMap<&'a str, r::Value>, Vec<QueryExecutionError>> {
902902
let mut coerced_values = HashMap::new();
903903
let mut errors = vec![];
904904

905-
let resolver = |name: &str| query.schema.document().get_named_type(name);
905+
let resolver = |name: &str| schema.document().get_named_type(name);
906906

907907
for argument_def in sast::get_argument_definitions(ty, &field.name)
908908
.into_iter()

graphql/src/execution/query.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -257,13 +257,14 @@ impl Query {
257257

258258
let root_type = self.schema.query_type.as_ref();
259259
for field in self.selection_set.fields_for(root_type) {
260-
let args = match crate::execution::coerce_argument_values(self, root_type, field) {
261-
Ok(args) => args,
262-
Err(errs) => {
263-
errors.extend(errs);
264-
continue;
265-
}
266-
};
260+
let args =
261+
match crate::execution::coerce_argument_values(&self.schema, root_type, field) {
262+
Ok(args) => args,
263+
Err(errs) => {
264+
errors.extend(errs);
265+
continue;
266+
}
267+
};
267268

268269
let bc = match args.get("block") {
269270
Some(bc) => BlockConstraint::try_from_value(bc).map_err(|_| {

graphql/src/store/prefetch.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,8 @@ fn execute_field(
630630
field_definition: &s::Field,
631631
selected_attrs: SelectedAttributes<'_>,
632632
) -> Result<Vec<Node>, Vec<QueryExecutionError>> {
633-
let argument_values = crate::execution::coerce_argument_values(&ctx.query, object_type, field)?;
633+
let argument_values =
634+
crate::execution::coerce_argument_values(&ctx.query.schema, object_type, field)?;
634635
let multiplicity = if sast::is_list_or_non_null_list_field(field_definition) {
635636
ChildMultiplicity::Many
636637
} else {

graphql/src/subscription/mod.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,8 @@ fn create_source_event_stream(
119119
}
120120
};
121121

122-
let argument_values = coerce_argument_values(&ctx.query, subscription_type.as_ref(), field)?;
122+
let argument_values =
123+
coerce_argument_values(&ctx.query.schema, subscription_type.as_ref(), field)?;
123124

124125
resolve_field_stream(&ctx, &subscription_type, field, argument_values)
125126
}

0 commit comments

Comments
 (0)