From 2f0bcaa8ee683185d210b191654db4ec153d1477 Mon Sep 17 00:00:00 2001 From: Sunli Date: Fri, 15 Apr 2022 15:31:07 +0800 Subject: [PATCH] Remove useless `ParseQueryFut` type --- src/http/mod.rs | 4 ++-- src/schema.rs | 38 ++++++++------------------------------ 2 files changed, 10 insertions(+), 32 deletions(-) diff --git a/src/http/mod.rs b/src/http/mod.rs index 2fddf6e9..8adf081e 100644 --- a/src/http/mod.rs +++ b/src/http/mod.rs @@ -111,6 +111,6 @@ pub async fn receive_batch_cbor(body: impl AsyncRead) -> Result(&data) - .map_err(|e| ParseRequestError::InvalidRequest(Box::new(e)))?) + serde_cbor::from_slice::(&data) + .map_err(|e| ParseRequestError::InvalidRequest(Box::new(e))) } diff --git a/src/schema.rs b/src/schema.rs index 7fbac23c..9480cfd9 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -1,6 +1,3 @@ -use core::future::Future; -use core::pin::Pin; -use core::task; use std::any::Any; use std::collections::HashMap; use std::ops::Deref; @@ -13,9 +10,7 @@ use crate::context::{Data, QueryEnvInner}; use crate::custom_directive::CustomDirectiveFactory; use crate::extensions::{ExtensionFactory, Extensions}; use crate::model::__DirectiveLocation; -use crate::parser::types::{ - Directive, DocumentOperations, ExecutableDocument, OperationType, Selection, SelectionSet, -}; +use crate::parser::types::{Directive, DocumentOperations, OperationType, Selection, SelectionSet}; use crate::parser::{parse_query, Positioned}; use crate::registry::{MetaDirective, MetaInputValue, Registry}; use crate::resolver_utils::{resolve_container, resolve_container_serial}; @@ -27,26 +22,6 @@ use crate::{ QueryEnv, Request, Response, ServerError, SubscriptionType, Variables, ID, }; -pub struct ParseQueryFut<'a> { - query: &'a str, - parsed: Option, -} - -impl<'a> Future for ParseQueryFut<'a> { - type Output = Result; - - #[inline(always)] - fn poll(self: Pin<&mut Self>, _: &mut task::Context<'_>) -> task::Poll { - 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 pub struct SchemaBuilder { validation_mode: ValidationMode, @@ -455,13 +430,16 @@ where let mut request = extensions.prepare_request(request).await?; let mut document = { let query = &request.query; - let fut_parse = ParseQueryFut { - query, - parsed: request.parsed_query.take(), + let parsed_doc = request.parsed_query.take(); + let fut_parse = async move { + match parsed_doc { + Some(parsed_doc) => Ok(parsed_doc), + None => parse_query(query).map_err(Into::into), + } }; futures_util::pin_mut!(fut_parse); extensions - .parse_query(&query, &request.variables, &mut fut_parse) + .parse_query(query, &request.variables, &mut fut_parse) .await? };