Support unnamed inline fragment

This commit is contained in:
sunli 2020-03-31 15:09:28 +08:00
parent a13204273e
commit d4c4c52069
2 changed files with 15 additions and 7 deletions

View File

@ -243,9 +243,10 @@ where
.map_err(actix_web::error::ErrorBadRequest)? .map_err(actix_web::error::ErrorBadRequest)?
}; };
let mut builder = gql_request let mut builder = match gql_request.builder(schema) {
.builder(schema) Ok(builder) => builder,
.map_err(actix_web::error::ErrorBadRequest)?; Err(err) => return Ok(web::Json(GQLResponse(Err(err))).respond_to(&req).await?),
};
if let Some(on_request) = on_request { if let Some(on_request) = on_request {
builder = on_request(&req, builder); builder = on_request(&req, builder);
@ -320,12 +321,13 @@ where
.respond_to(&req) .respond_to(&req)
.await?) .await?)
} else if ct.essence_str() == mime::APPLICATION_JSON { } else if ct.essence_str() == mime::APPLICATION_JSON {
let mut gql_req = web::Json::<GQLRequest>::from_request(&req, &mut payload.0) let mut gql_request = web::Json::<GQLRequest>::from_request(&req, &mut payload.0)
.await? .await?
.into_inner(); .into_inner();
let mut builder = gql_req let mut builder = match gql_request.builder(schema) {
.builder(schema) Ok(builder) => builder,
.map_err(actix_web::error::ErrorBadRequest)?; Err(err) => return Ok(web::Json(GQLResponse(Err(err))).respond_to(&req).await?),
};
if let Some(on_request) = on_request { if let Some(on_request) = on_request {
builder = on_request(&req, builder); builder = on_request(&req, builder);
} }

View File

@ -129,6 +129,12 @@ pub fn collect_fields<'a, T: ObjectType + Send + Sync>(
&ctx.with_selection_set(&inline_fragment.selection_set), &ctx.with_selection_set(&inline_fragment.selection_set),
futures, futures,
)?; )?;
} else {
collect_fields(
&ctx.with_selection_set(&inline_fragment.selection_set),
root,
futures,
)?;
} }
} }
} }