Update iron to central GraphQLBatch*
enums (#611)
This commit is contained in:
parent
926d4e5738
commit
33c3526931
1 changed files with 2 additions and 64 deletions
|
@ -122,72 +122,10 @@ use std::{error::Error, fmt, io::Read};
|
||||||
use serde_json::error::Error as SerdeError;
|
use serde_json::error::Error as SerdeError;
|
||||||
|
|
||||||
use juniper::{
|
use juniper::{
|
||||||
http, serde::Deserialize, DefaultScalarValue, GraphQLType, InputValue, RootNode, ScalarValue,
|
http, http::GraphQLBatchRequest, DefaultScalarValue, GraphQLType, InputValue, RootNode,
|
||||||
|
ScalarValue,
|
||||||
};
|
};
|
||||||
|
|
||||||
#[derive(serde_derive::Deserialize)]
|
|
||||||
#[serde(untagged)]
|
|
||||||
#[serde(bound = "InputValue<S>: Deserialize<'de>")]
|
|
||||||
enum GraphQLBatchRequest<S = DefaultScalarValue>
|
|
||||||
where
|
|
||||||
S: ScalarValue,
|
|
||||||
{
|
|
||||||
Single(http::GraphQLRequest<S>),
|
|
||||||
Batch(Vec<http::GraphQLRequest<S>>),
|
|
||||||
}
|
|
||||||
|
|
||||||
#[derive(serde_derive::Serialize)]
|
|
||||||
#[serde(untagged)]
|
|
||||||
enum GraphQLBatchResponse<'a, S = DefaultScalarValue>
|
|
||||||
where
|
|
||||||
S: ScalarValue,
|
|
||||||
{
|
|
||||||
Single(http::GraphQLResponse<'a, S>),
|
|
||||||
Batch(Vec<http::GraphQLResponse<'a, S>>),
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<S> GraphQLBatchRequest<S>
|
|
||||||
where
|
|
||||||
S: ScalarValue,
|
|
||||||
{
|
|
||||||
pub fn execute_sync<'a, CtxT, QueryT, MutationT, Subscription>(
|
|
||||||
&'a self,
|
|
||||||
root_node: &'a RootNode<QueryT, MutationT, Subscription, S>,
|
|
||||||
context: &CtxT,
|
|
||||||
) -> GraphQLBatchResponse<'a, S>
|
|
||||||
where
|
|
||||||
QueryT: GraphQLType<S, Context = CtxT>,
|
|
||||||
MutationT: GraphQLType<S, Context = CtxT>,
|
|
||||||
Subscription: GraphQLType<S, Context = CtxT>,
|
|
||||||
{
|
|
||||||
match *self {
|
|
||||||
GraphQLBatchRequest::Single(ref request) => {
|
|
||||||
GraphQLBatchResponse::Single(request.execute_sync(root_node, context))
|
|
||||||
}
|
|
||||||
GraphQLBatchRequest::Batch(ref requests) => GraphQLBatchResponse::Batch(
|
|
||||||
requests
|
|
||||||
.iter()
|
|
||||||
.map(|request| request.execute_sync(root_node, context))
|
|
||||||
.collect(),
|
|
||||||
),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a, S> GraphQLBatchResponse<'a, S>
|
|
||||||
where
|
|
||||||
S: ScalarValue,
|
|
||||||
{
|
|
||||||
fn is_ok(&self) -> bool {
|
|
||||||
match *self {
|
|
||||||
GraphQLBatchResponse::Single(ref response) => response.is_ok(),
|
|
||||||
GraphQLBatchResponse::Batch(ref responses) => {
|
|
||||||
responses.iter().all(|response| response.is_ok())
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Handler that executes `GraphQL` queries in the given schema
|
/// Handler that executes `GraphQL` queries in the given schema
|
||||||
///
|
///
|
||||||
/// The handler responds to GET requests and POST requests only. In GET
|
/// The handler responds to GET requests and POST requests only. In GET
|
||||||
|
|
Loading…
Reference in a new issue