Remove Deref for ContextBase
This commit is contained in:
parent
dcc7d1be14
commit
b8add03d53
|
@ -237,13 +237,13 @@ pub fn generate(interface_args: &args::Interface, input: &DeriveInput) -> Result
|
||||||
|
|
||||||
let resolve_obj = quote! {
|
let resolve_obj = quote! {
|
||||||
self.#method_name(#(#use_params),*).await.
|
self.#method_name(#(#use_params),*).await.
|
||||||
map_err(|err| err.into_error_with_path(ctx.position(), ctx.path_node.as_ref()))?
|
map_err(|err| err.into_error_with_path(ctx.item.pos, ctx.path_node.as_ref()))?
|
||||||
};
|
};
|
||||||
|
|
||||||
resolvers.push(quote! {
|
resolvers.push(quote! {
|
||||||
if ctx.node.name.node == #name {
|
if ctx.item.node.name.node == #name {
|
||||||
#(#get_params)*
|
#(#get_params)*
|
||||||
let ctx_obj = ctx.with_selection_set(&ctx.node.selection_set);
|
let ctx_obj = ctx.with_selection_set(&ctx.item.node.selection_set);
|
||||||
return #crate_name::OutputValueType::resolve(&#resolve_obj, &ctx_obj, ctx.item).await;
|
return #crate_name::OutputValueType::resolve(&#resolve_obj, &ctx_obj, ctx.item).await;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -307,9 +307,9 @@ pub fn generate(interface_args: &args::Interface, input: &DeriveInput) -> Result
|
||||||
async fn resolve_field(&self, ctx: &#crate_name::Context<'_>) -> #crate_name::Result<#crate_name::serde_json::Value> {
|
async fn resolve_field(&self, ctx: &#crate_name::Context<'_>) -> #crate_name::Result<#crate_name::serde_json::Value> {
|
||||||
#(#resolvers)*
|
#(#resolvers)*
|
||||||
Err(#crate_name::QueryError::FieldNotFound {
|
Err(#crate_name::QueryError::FieldNotFound {
|
||||||
field_name: ctx.node.name.to_string(),
|
field_name: ctx.item.node.name.to_string(),
|
||||||
object: #gql_typename.to_string(),
|
object: #gql_typename.to_string(),
|
||||||
}.into_error(ctx.position()))
|
}.into_error(ctx.item.pos))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn collect_all_fields<'a>(&'a self, ctx: &#crate_name::ContextSelectionSet<'a>, fields: &mut #crate_name::resolver_utils::Fields<'a>) -> #crate_name::Result<()> {
|
fn collect_all_fields<'a>(&'a self, ctx: &#crate_name::ContextSelectionSet<'a>, fields: &mut #crate_name::resolver_utils::Fields<'a>) -> #crate_name::Result<()> {
|
||||||
|
|
|
@ -151,7 +151,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
||||||
// requires
|
// requires
|
||||||
requires_getter.push(quote! {
|
requires_getter.push(quote! {
|
||||||
let #ident: #ty = #crate_name::InputValueType::parse(params.get(#name).cloned()).
|
let #ident: #ty = #crate_name::InputValueType::parse(params.get(#name).cloned()).
|
||||||
map_err(|err| err.into_error(ctx.position(), <#ty as #crate_name::Type>::qualified_type_name()))?;
|
map_err(|err| err.into_error(ctx.item.pos, <#ty as #crate_name::Type>::qualified_type_name()))?;
|
||||||
});
|
});
|
||||||
use_keys.push(ident);
|
use_keys.push(ident);
|
||||||
}
|
}
|
||||||
|
@ -177,7 +177,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
||||||
)
|
)
|
||||||
.expect("invalid result type");
|
.expect("invalid result type");
|
||||||
}
|
}
|
||||||
let do_find = quote! { self.#field_ident(ctx, #(#use_keys),*).await.map_err(|err| err.into_error(ctx.position()))? };
|
let do_find = quote! { self.#field_ident(ctx, #(#use_keys),*).await.map_err(|err| err.into_error(ctx.item.pos))? };
|
||||||
|
|
||||||
find_entities.push((
|
find_entities.push((
|
||||||
args.len(),
|
args.len(),
|
||||||
|
@ -185,7 +185,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
||||||
if typename == &<#entity_type as #crate_name::Type>::type_name() {
|
if typename == &<#entity_type as #crate_name::Type>::type_name() {
|
||||||
if let (#(#key_pat),*) = (#(#key_getter),*) {
|
if let (#(#key_pat),*) = (#(#key_getter),*) {
|
||||||
#(#requires_getter)*
|
#(#requires_getter)*
|
||||||
let ctx_obj = ctx.with_selection_set(&ctx.node.selection_set);
|
let ctx_obj = ctx.with_selection_set(&ctx.item.node.selection_set);
|
||||||
return #crate_name::OutputValueType::resolve(&#do_find, &ctx_obj, ctx.item).await;
|
return #crate_name::OutputValueType::resolve(&#do_find, &ctx_obj, ctx.item).await;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -400,7 +400,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
||||||
let resolve_obj = quote! {
|
let resolve_obj = quote! {
|
||||||
{
|
{
|
||||||
let res = self.#field_ident(ctx, #(#use_params),*).await;
|
let res = self.#field_ident(ctx, #(#use_params),*).await;
|
||||||
res.map_err(|err| err.into_error_with_path(ctx.position(), ctx.path_node.as_ref()))?
|
res.map_err(|err| err.into_error_with_path(ctx.item.pos, ctx.path_node.as_ref()))?
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -408,20 +408,20 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
||||||
.guard
|
.guard
|
||||||
.map(|guard| quote! {
|
.map(|guard| quote! {
|
||||||
#guard.check(ctx).await
|
#guard.check(ctx).await
|
||||||
.map_err(|err| err.into_error_with_path(ctx.position(), ctx.path_node.as_ref()))?;
|
.map_err(|err| err.into_error_with_path(ctx.item.pos, ctx.path_node.as_ref()))?;
|
||||||
});
|
});
|
||||||
let post_guard = field
|
let post_guard = field
|
||||||
.post_guard
|
.post_guard
|
||||||
.map(|guard| quote! {
|
.map(|guard| quote! {
|
||||||
#guard.check(ctx, &res).await
|
#guard.check(ctx, &res).await
|
||||||
.map_err(|err| err.into_error_with_path(ctx.position(), ctx.path_node.as_ref()))?;
|
.map_err(|err| err.into_error_with_path(ctx.item.pos, ctx.path_node.as_ref()))?;
|
||||||
});
|
});
|
||||||
|
|
||||||
resolvers.push(quote! {
|
resolvers.push(quote! {
|
||||||
if ctx.node.name.node == #field_name {
|
if ctx.item.node.name.node == #field_name {
|
||||||
#(#get_params)*
|
#(#get_params)*
|
||||||
#guard
|
#guard
|
||||||
let ctx_obj = ctx.with_selection_set(&ctx.node.selection_set);
|
let ctx_obj = ctx.with_selection_set(&ctx.item.node.selection_set);
|
||||||
let res = #resolve_obj;
|
let res = #resolve_obj;
|
||||||
#post_guard
|
#post_guard
|
||||||
return #crate_name::OutputValueType::resolve(&res, &ctx_obj, ctx.item).await;
|
return #crate_name::OutputValueType::resolve(&res, &ctx_obj, ctx.item).await;
|
||||||
|
@ -496,23 +496,23 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
||||||
async fn resolve_field(&self, ctx: &#crate_name::Context<'_>) -> #crate_name::Result<#crate_name::serde_json::Value> {
|
async fn resolve_field(&self, ctx: &#crate_name::Context<'_>) -> #crate_name::Result<#crate_name::serde_json::Value> {
|
||||||
#(#resolvers)*
|
#(#resolvers)*
|
||||||
Err(#crate_name::QueryError::FieldNotFound {
|
Err(#crate_name::QueryError::FieldNotFound {
|
||||||
field_name: ctx.node.name.to_string(),
|
field_name: ctx.item.node.name.to_string(),
|
||||||
object: #gql_typename.to_string(),
|
object: #gql_typename.to_string(),
|
||||||
}.into_error(ctx.position()))
|
}.into_error(ctx.item.pos))
|
||||||
}
|
}
|
||||||
|
|
||||||
async fn find_entity(&self, ctx: &#crate_name::Context<'_>, params: &#crate_name::Value) -> #crate_name::Result<#crate_name::serde_json::Value> {
|
async fn find_entity(&self, ctx: &#crate_name::Context<'_>, params: &#crate_name::Value) -> #crate_name::Result<#crate_name::serde_json::Value> {
|
||||||
let params = match params {
|
let params = match params {
|
||||||
#crate_name::Value::Object(params) => params,
|
#crate_name::Value::Object(params) => params,
|
||||||
_ => return Err(#crate_name::QueryError::EntityNotFound.into_error(ctx.position())),
|
_ => return Err(#crate_name::QueryError::EntityNotFound.into_error(ctx.item.pos)),
|
||||||
};
|
};
|
||||||
let typename = if let Some(#crate_name::Value::String(typename)) = params.get("__typename") {
|
let typename = if let Some(#crate_name::Value::String(typename)) = params.get("__typename") {
|
||||||
typename
|
typename
|
||||||
} else {
|
} else {
|
||||||
return Err(#crate_name::QueryError::TypeNameNotExists.into_error(ctx.position()));
|
return Err(#crate_name::QueryError::TypeNameNotExists.into_error(ctx.item.pos));
|
||||||
};
|
};
|
||||||
#(#find_entities_iter)*
|
#(#find_entities_iter)*
|
||||||
Err(#crate_name::QueryError::EntityNotFound.into_error(ctx.position()))
|
Err(#crate_name::QueryError::EntityNotFound.into_error(ctx.item.pos))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -98,10 +98,10 @@ pub fn generate(object_args: &args::Object, input: &DeriveInput) -> Result<Token
|
||||||
let ident = &item.ident;
|
let ident = &item.ident;
|
||||||
let guard = field
|
let guard = field
|
||||||
.guard
|
.guard
|
||||||
.map(|guard| quote! { #guard.check(ctx).await.map_err(|err| err.into_error_with_path(ctx.position(), ctx.path_node.as_ref()))?; });
|
.map(|guard| quote! { #guard.check(ctx).await.map_err(|err| err.into_error_with_path(ctx.item.pos, ctx.path_node.as_ref()))?; });
|
||||||
let post_guard = field
|
let post_guard = field
|
||||||
.post_guard
|
.post_guard
|
||||||
.map(|guard| quote! { #guard.check(ctx, &res).await.map_err(|err| err.into_error_with_path(ctx.position(), ctx.path_node.as_ref()))?; });
|
.map(|guard| quote! { #guard.check(ctx, &res).await.map_err(|err| err.into_error_with_path(ctx.item.pos, ctx.path_node.as_ref()))?; });
|
||||||
|
|
||||||
let features = &field.features;
|
let features = &field.features;
|
||||||
getters.push(if !field.owned {
|
getters.push(if !field.owned {
|
||||||
|
@ -135,10 +135,10 @@ pub fn generate(object_args: &args::Object, input: &DeriveInput) -> Result<Token
|
||||||
});
|
});
|
||||||
|
|
||||||
resolvers.push(quote! {
|
resolvers.push(quote! {
|
||||||
if ctx.node.name.node == #field_name {
|
if ctx.item.node.name.node == #field_name {
|
||||||
#guard
|
#guard
|
||||||
let res = self.#ident(ctx).await.map_err(|err| err.into_error_with_path(ctx.position(), ctx.path_node.as_ref()))?;
|
let res = self.#ident(ctx).await.map_err(|err| err.into_error_with_path(ctx.item.pos, ctx.path_node.as_ref()))?;
|
||||||
let ctx_obj = ctx.with_selection_set(&ctx.node.selection_set);
|
let ctx_obj = ctx.with_selection_set(&ctx.item.node.selection_set);
|
||||||
#post_guard
|
#post_guard
|
||||||
return #crate_name::OutputValueType::resolve(&res, &ctx_obj, ctx.item).await;
|
return #crate_name::OutputValueType::resolve(&res, &ctx_obj, ctx.item).await;
|
||||||
}
|
}
|
||||||
|
@ -192,9 +192,9 @@ pub fn generate(object_args: &args::Object, input: &DeriveInput) -> Result<Token
|
||||||
async fn resolve_field(&self, ctx: &#crate_name::Context<'_>) -> #crate_name::Result<#crate_name::serde_json::Value> {
|
async fn resolve_field(&self, ctx: &#crate_name::Context<'_>) -> #crate_name::Result<#crate_name::serde_json::Value> {
|
||||||
#(#resolvers)*
|
#(#resolvers)*
|
||||||
Err(#crate_name::QueryError::FieldNotFound {
|
Err(#crate_name::QueryError::FieldNotFound {
|
||||||
field_name: ctx.node.name.to_string(),
|
field_name: ctx.item.node.name.to_string(),
|
||||||
object: #gql_typename.to_string(),
|
object: #gql_typename.to_string(),
|
||||||
}.into_error(ctx.position()))
|
}.into_error(ctx.item.pos))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -234,11 +234,11 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
||||||
|
|
||||||
let create_field_stream = quote! {
|
let create_field_stream = quote! {
|
||||||
#crate_name::futures::stream::StreamExt::fuse(self.#ident(ctx, #(#use_params),*).await.
|
#crate_name::futures::stream::StreamExt::fuse(self.#ident(ctx, #(#use_params),*).await.
|
||||||
map_err(|err| err.into_error_with_path(ctx.position(), ctx.path_node.as_ref()))?)
|
map_err(|err| err.into_error_with_path(ctx.item.pos, ctx.path_node.as_ref()))?)
|
||||||
};
|
};
|
||||||
|
|
||||||
let guard = field.guard.map(|guard| quote! {
|
let guard = field.guard.map(|guard| quote! {
|
||||||
#guard.check(ctx).await.map_err(|err| err.into_error_with_path(ctx.position(), ctx.path_node.as_ref()))?;
|
#guard.check(ctx).await.map_err(|err| err.into_error_with_path(ctx.item.pos, ctx.path_node.as_ref()))?;
|
||||||
});
|
});
|
||||||
if field.post_guard.is_some() {
|
if field.post_guard.is_some() {
|
||||||
return Err(Error::new_spanned(
|
return Err(Error::new_spanned(
|
||||||
|
@ -248,13 +248,13 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
||||||
}
|
}
|
||||||
|
|
||||||
create_stream.push(quote! {
|
create_stream.push(quote! {
|
||||||
if ctx.node.name.node == #field_name {
|
if ctx.item.node.name.node == #field_name {
|
||||||
#(#get_params)*
|
#(#get_params)*
|
||||||
#guard
|
#guard
|
||||||
let field_name = ::std::sync::Arc::new(ctx.item.node.response_key().node.clone());
|
let field_name = ::std::sync::Arc::new(ctx.item.node.response_key().node.clone());
|
||||||
let field = ::std::sync::Arc::new(ctx.item.clone());
|
let field = ::std::sync::Arc::new(ctx.item.clone());
|
||||||
|
|
||||||
let pos = ctx.position();
|
let pos = ctx.item.pos;
|
||||||
let schema_env = schema_env.clone();
|
let schema_env = schema_env.clone();
|
||||||
let query_env = query_env.clone();
|
let query_env = query_env.clone();
|
||||||
let stream = #crate_name::futures::StreamExt::then(#create_field_stream, {
|
let stream = #crate_name::futures::StreamExt::then(#create_field_stream, {
|
||||||
|
@ -353,9 +353,9 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
||||||
) -> #crate_name::Result<::std::pin::Pin<Box<dyn #crate_name::futures::Stream<Item = #crate_name::Response> + Send>>> {
|
) -> #crate_name::Result<::std::pin::Pin<Box<dyn #crate_name::futures::Stream<Item = #crate_name::Response> + Send>>> {
|
||||||
#(#create_stream)*
|
#(#create_stream)*
|
||||||
Err(#crate_name::QueryError::FieldNotFound {
|
Err(#crate_name::QueryError::FieldNotFound {
|
||||||
field_name: ctx.node.name.to_string(),
|
field_name: ctx.item.node.name.to_string(),
|
||||||
object: #gql_typename.to_string(),
|
object: #gql_typename.to_string(),
|
||||||
}.into_error(ctx.position()))
|
}.into_error(ctx.item.pos))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -130,9 +130,9 @@ pub fn generate(union_args: &args::Interface, input: &DeriveInput) -> Result<Tok
|
||||||
impl #generics #crate_name::resolver_utils::ObjectType for #ident #generics {
|
impl #generics #crate_name::resolver_utils::ObjectType for #ident #generics {
|
||||||
async fn resolve_field(&self, ctx: &#crate_name::Context<'_>) -> #crate_name::Result<#crate_name::serde_json::Value> {
|
async fn resolve_field(&self, ctx: &#crate_name::Context<'_>) -> #crate_name::Result<#crate_name::serde_json::Value> {
|
||||||
Err(#crate_name::QueryError::FieldNotFound {
|
Err(#crate_name::QueryError::FieldNotFound {
|
||||||
field_name: ctx.node.name.to_string(),
|
field_name: ctx.item.node.name.to_string(),
|
||||||
object: #gql_typename.to_string(),
|
object: #gql_typename.to_string(),
|
||||||
}.into_error(ctx.position()))
|
}.into_error(ctx.item.pos))
|
||||||
}
|
}
|
||||||
|
|
||||||
fn collect_all_fields<'a>(&'a self, ctx: &#crate_name::ContextSelectionSet<'a>, fields: &mut #crate_name::resolver_utils::Fields<'a>) -> #crate_name::Result<()> {
|
fn collect_all_fields<'a>(&'a self, ctx: &#crate_name::ContextSelectionSet<'a>, fields: &mut #crate_name::resolver_utils::Fields<'a>) -> #crate_name::Result<()> {
|
||||||
|
|
|
@ -236,14 +236,6 @@ pub struct ContextBase<'a, T> {
|
||||||
pub(crate) query_env: &'a QueryEnv,
|
pub(crate) query_env: &'a QueryEnv,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a, T> Deref for ContextBase<'a, T> {
|
|
||||||
type Target = T;
|
|
||||||
|
|
||||||
fn deref(&self) -> &Self::Target {
|
|
||||||
&self.item
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#[doc(hidden)]
|
#[doc(hidden)]
|
||||||
pub struct QueryEnvInner {
|
pub struct QueryEnvInner {
|
||||||
pub extensions: spin::Mutex<Extensions>,
|
pub extensions: spin::Mutex<Extensions>,
|
||||||
|
@ -488,11 +480,6 @@ impl<'a> ContextBase<'a, &'a Positioned<Field>> {
|
||||||
InputValueType::parse(value).map_err(|e| e.into_error(pos, T::qualified_type_name()))
|
InputValueType::parse(value).map_err(|e| e.into_error(pos, T::qualified_type_name()))
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Get the position of the current field in the query code.
|
|
||||||
pub fn position(&self) -> Pos {
|
|
||||||
self.pos
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Creates a uniform interface to inspect the forthcoming selections.
|
/// Creates a uniform interface to inspect the forthcoming selections.
|
||||||
///
|
///
|
||||||
/// # Examples
|
/// # Examples
|
||||||
|
|
|
@ -38,7 +38,7 @@ pub trait ObjectType: OutputValueType {
|
||||||
|
|
||||||
/// Query entities with params
|
/// Query entities with params
|
||||||
async fn find_entity(&self, ctx: &Context<'_>, _params: &Value) -> Result<serde_json::Value> {
|
async fn find_entity(&self, ctx: &Context<'_>, _params: &Value) -> Result<serde_json::Value> {
|
||||||
Err(QueryError::EntityNotFound.into_error(ctx.pos))
|
Err(QueryError::EntityNotFound.into_error(ctx.item.pos))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -196,17 +196,17 @@ where
|
||||||
EE: ObjectType + Sync + Send,
|
EE: ObjectType + Sync + Send,
|
||||||
{
|
{
|
||||||
async fn resolve_field(&self, ctx: &Context<'_>) -> Result<serde_json::Value> {
|
async fn resolve_field(&self, ctx: &Context<'_>) -> Result<serde_json::Value> {
|
||||||
if ctx.node.name.node == "pageInfo" {
|
if ctx.item.node.name.node == "pageInfo" {
|
||||||
let page_info = PageInfo {
|
let page_info = PageInfo {
|
||||||
has_previous_page: self.has_previous_page,
|
has_previous_page: self.has_previous_page,
|
||||||
has_next_page: self.has_next_page,
|
has_next_page: self.has_next_page,
|
||||||
start_cursor: self.edges.first().map(|edge| edge.cursor.encode_cursor()),
|
start_cursor: self.edges.first().map(|edge| edge.cursor.encode_cursor()),
|
||||||
end_cursor: self.edges.last().map(|edge| edge.cursor.encode_cursor()),
|
end_cursor: self.edges.last().map(|edge| edge.cursor.encode_cursor()),
|
||||||
};
|
};
|
||||||
let ctx_obj = ctx.with_selection_set(&ctx.node.selection_set);
|
let ctx_obj = ctx.with_selection_set(&ctx.item.node.selection_set);
|
||||||
return OutputValueType::resolve(&page_info, &ctx_obj, ctx.item).await;
|
return OutputValueType::resolve(&page_info, &ctx_obj, ctx.item).await;
|
||||||
} else if ctx.node.name.node == "edges" {
|
} else if ctx.item.node.name.node == "edges" {
|
||||||
let ctx_obj = ctx.with_selection_set(&ctx.node.selection_set);
|
let ctx_obj = ctx.with_selection_set(&ctx.item.node.selection_set);
|
||||||
return OutputValueType::resolve(&self.edges, &ctx_obj, ctx.item).await;
|
return OutputValueType::resolve(&self.edges, &ctx_obj, ctx.item).await;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -111,10 +111,10 @@ where
|
||||||
E: ObjectType + Sync + Send,
|
E: ObjectType + Sync + Send,
|
||||||
{
|
{
|
||||||
async fn resolve_field(&self, ctx: &Context<'_>) -> Result<serde_json::Value> {
|
async fn resolve_field(&self, ctx: &Context<'_>) -> Result<serde_json::Value> {
|
||||||
if ctx.node.name.node == "node" {
|
if ctx.item.node.name.node == "node" {
|
||||||
let ctx_obj = ctx.with_selection_set(&ctx.node.selection_set);
|
let ctx_obj = ctx.with_selection_set(&ctx.item.node.selection_set);
|
||||||
return OutputValueType::resolve(&self.node, &ctx_obj, ctx.item).await;
|
return OutputValueType::resolve(&self.node, &ctx_obj, ctx.item).await;
|
||||||
} else if ctx.node.name.node == "cursor" {
|
} else if ctx.item.node.name.node == "cursor" {
|
||||||
return Ok(self.cursor.encode_cursor().into());
|
return Ok(self.cursor.encode_cursor().into());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -85,7 +85,7 @@ impl<T: ObjectType + Send + Sync> ObjectType for QueryRoot<T> {
|
||||||
if ctx.item.node.name.node == "__schema" {
|
if ctx.item.node.name.node == "__schema" {
|
||||||
if self.disable_introspection {
|
if self.disable_introspection {
|
||||||
return Err(Error::Query {
|
return Err(Error::Query {
|
||||||
pos: ctx.pos,
|
pos: ctx.item.pos,
|
||||||
path: ctx
|
path: ctx
|
||||||
.path_node
|
.path_node
|
||||||
.as_ref()
|
.as_ref()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user