Fix Subscriptions issue: "multiple applicable items in scope" #194
This commit is contained in:
parent
5d4032bca7
commit
b84a3a36d2
@ -121,8 +121,6 @@ pub fn generate(object_args: &args::InputObject, input: &DeriveInput) -> Result<
|
|||||||
#[allow(clippy::all, clippy::pedantic)]
|
#[allow(clippy::all, clippy::pedantic)]
|
||||||
impl #crate_name::InputValueType for #ident {
|
impl #crate_name::InputValueType for #ident {
|
||||||
fn parse(value: Option<#crate_name::Value>) -> #crate_name::InputValueResult<Self> {
|
fn parse(value: Option<#crate_name::Value>) -> #crate_name::InputValueResult<Self> {
|
||||||
use #crate_name::Type;
|
|
||||||
|
|
||||||
if let Some(#crate_name::Value::Object(obj)) = value {
|
if let Some(#crate_name::Value::Object(obj)) = value {
|
||||||
#(#get_fields)*
|
#(#get_fields)*
|
||||||
Ok(Self { #(#fields),* })
|
Ok(Self { #(#fields),* })
|
||||||
|
@ -417,13 +417,12 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
|||||||
|
|
||||||
resolvers.push(quote! {
|
resolvers.push(quote! {
|
||||||
if ctx.name.node == #field_name {
|
if ctx.name.node == #field_name {
|
||||||
use #crate_name::OutputValueType;
|
|
||||||
#(#get_params)*
|
#(#get_params)*
|
||||||
#guard
|
#guard
|
||||||
let ctx_obj = ctx.with_selection_set(&ctx.selection_set);
|
let ctx_obj = ctx.with_selection_set(&ctx.selection_set);
|
||||||
let res = #resolve_obj;
|
let res = #resolve_obj;
|
||||||
#post_guard
|
#post_guard
|
||||||
return OutputValueType::resolve(&res, &ctx_obj, ctx.item).await;
|
return #crate_name::OutputValueType::resolve(&res, &ctx_obj, ctx.item).await;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -248,8 +248,6 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
|||||||
|
|
||||||
create_stream.push(quote! {
|
create_stream.push(quote! {
|
||||||
if ctx.name.node == #field_name {
|
if ctx.name.node == #field_name {
|
||||||
use #crate_name::futures::{StreamExt, TryStreamExt};
|
|
||||||
|
|
||||||
#(#get_params)*
|
#(#get_params)*
|
||||||
#guard
|
#guard
|
||||||
let field_name = ::std::sync::Arc::new(ctx.result_name().to_string());
|
let field_name = ::std::sync::Arc::new(ctx.result_name().to_string());
|
||||||
@ -258,7 +256,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
|||||||
let pos = ctx.position();
|
let pos = ctx.position();
|
||||||
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 = #create_field_stream.then({
|
let stream = #crate_name::futures::StreamExt::then(#create_field_stream, {
|
||||||
let field_name = field_name.clone();
|
let field_name = field_name.clone();
|
||||||
move |msg| {
|
move |msg| {
|
||||||
let schema_env = schema_env.clone();
|
let schema_env = schema_env.clone();
|
||||||
@ -280,9 +278,9 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
|
|||||||
#crate_name::OutputValueType::resolve(&msg, &ctx_selection_set, &*field).await
|
#crate_name::OutputValueType::resolve(&msg, &ctx_selection_set, &*field).await
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
})
|
});
|
||||||
.map_ok(move |value| #crate_name::serde_json::json!({ field_name.as_str(): value }))
|
let stream = #crate_name::futures::TryStreamExt::map_ok(stream, move |value| #crate_name::serde_json::json!({ field_name.as_str(): value }));
|
||||||
.scan(true, |state, item| {
|
let stream = #crate_name::futures::StreamExt::scan(stream, true, |state, item| {
|
||||||
if !*state {
|
if !*state {
|
||||||
return #crate_name::futures::future::ready(None);
|
return #crate_name::futures::future::ready(None);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user