Remove useless ParseQueryFut
type
This commit is contained in:
parent
22d61df4d7
commit
2f0bcaa8ee
|
@ -111,6 +111,6 @@ pub async fn receive_batch_cbor(body: impl AsyncRead) -> Result<BatchRequest, Pa
|
||||||
body.read_to_end(&mut data)
|
body.read_to_end(&mut data)
|
||||||
.await
|
.await
|
||||||
.map_err(ParseRequestError::Io)?;
|
.map_err(ParseRequestError::Io)?;
|
||||||
Ok(serde_cbor::from_slice::<BatchRequest>(&data)
|
serde_cbor::from_slice::<BatchRequest>(&data)
|
||||||
.map_err(|e| ParseRequestError::InvalidRequest(Box::new(e)))?)
|
.map_err(|e| ParseRequestError::InvalidRequest(Box::new(e)))
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
use core::future::Future;
|
|
||||||
use core::pin::Pin;
|
|
||||||
use core::task;
|
|
||||||
use std::any::Any;
|
use std::any::Any;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::ops::Deref;
|
use std::ops::Deref;
|
||||||
|
@ -13,9 +10,7 @@ use crate::context::{Data, QueryEnvInner};
|
||||||
use crate::custom_directive::CustomDirectiveFactory;
|
use crate::custom_directive::CustomDirectiveFactory;
|
||||||
use crate::extensions::{ExtensionFactory, Extensions};
|
use crate::extensions::{ExtensionFactory, Extensions};
|
||||||
use crate::model::__DirectiveLocation;
|
use crate::model::__DirectiveLocation;
|
||||||
use crate::parser::types::{
|
use crate::parser::types::{Directive, DocumentOperations, OperationType, Selection, SelectionSet};
|
||||||
Directive, DocumentOperations, ExecutableDocument, OperationType, Selection, SelectionSet,
|
|
||||||
};
|
|
||||||
use crate::parser::{parse_query, Positioned};
|
use crate::parser::{parse_query, Positioned};
|
||||||
use crate::registry::{MetaDirective, MetaInputValue, Registry};
|
use crate::registry::{MetaDirective, MetaInputValue, Registry};
|
||||||
use crate::resolver_utils::{resolve_container, resolve_container_serial};
|
use crate::resolver_utils::{resolve_container, resolve_container_serial};
|
||||||
|
@ -27,26 +22,6 @@ use crate::{
|
||||||
QueryEnv, Request, Response, ServerError, SubscriptionType, Variables, ID,
|
QueryEnv, Request, Response, ServerError, SubscriptionType, Variables, ID,
|
||||||
};
|
};
|
||||||
|
|
||||||
pub struct ParseQueryFut<'a> {
|
|
||||||
query: &'a str,
|
|
||||||
parsed: Option<ExecutableDocument>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> Future for ParseQueryFut<'a> {
|
|
||||||
type Output = Result<ExecutableDocument, ServerError>;
|
|
||||||
|
|
||||||
#[inline(always)]
|
|
||||||
fn poll(self: Pin<&mut Self>, _: &mut task::Context<'_>) -> task::Poll<Self::Output> {
|
|
||||||
let this = Pin::into_inner(self);
|
|
||||||
let result = match this.parsed.take() {
|
|
||||||
Some(document) => Ok(document),
|
|
||||||
None => parse_query(this.query).map_err(Into::into),
|
|
||||||
};
|
|
||||||
|
|
||||||
task::Poll::Ready(result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Schema builder
|
/// Schema builder
|
||||||
pub struct SchemaBuilder<Query, Mutation, Subscription> {
|
pub struct SchemaBuilder<Query, Mutation, Subscription> {
|
||||||
validation_mode: ValidationMode,
|
validation_mode: ValidationMode,
|
||||||
|
@ -455,13 +430,16 @@ where
|
||||||
let mut request = extensions.prepare_request(request).await?;
|
let mut request = extensions.prepare_request(request).await?;
|
||||||
let mut document = {
|
let mut document = {
|
||||||
let query = &request.query;
|
let query = &request.query;
|
||||||
let fut_parse = ParseQueryFut {
|
let parsed_doc = request.parsed_query.take();
|
||||||
query,
|
let fut_parse = async move {
|
||||||
parsed: request.parsed_query.take(),
|
match parsed_doc {
|
||||||
|
Some(parsed_doc) => Ok(parsed_doc),
|
||||||
|
None => parse_query(query).map_err(Into::into),
|
||||||
|
}
|
||||||
};
|
};
|
||||||
futures_util::pin_mut!(fut_parse);
|
futures_util::pin_mut!(fut_parse);
|
||||||
extensions
|
extensions
|
||||||
.parse_query(&query, &request.variables, &mut fut_parse)
|
.parse_query(query, &request.variables, &mut fut_parse)
|
||||||
.await?
|
.await?
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user