Object, SimpleObject, Subscription to add missing the where clause

This commit is contained in:
sunli 2020-04-28 18:05:06 +08:00
parent c3344845c6
commit 7893c2d482
3 changed files with 12 additions and 9 deletions

View File

@ -20,6 +20,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
_ => return Err(Error::new_spanned(&item_impl.self_ty, "Invalid type")),
};
let generics = &item_impl.generics;
let where_clause = &item_impl.generics.where_clause;
let extends = object_args.extends;
let gql_typename = object_args
@ -399,7 +400,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
let expanded = quote! {
#item_impl
impl #generics #crate_name::Type for #self_ty {
impl #generics #crate_name::Type for #self_ty #where_clause {
fn type_name() -> std::borrow::Cow<'static, str> {
std::borrow::Cow::Borrowed(#gql_typename)
}
@ -424,7 +425,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
}
#[#crate_name::async_trait::async_trait]
impl#generics #crate_name::ObjectType for #self_ty {
impl#generics #crate_name::ObjectType for #self_ty #where_clause {
async fn resolve_field(&self, ctx: &#crate_name::Context<'_>) -> #crate_name::Result<#crate_name::serde_json::Value> {
#(#resolvers)*
Err(#crate_name::QueryError::FieldNotFound {
@ -449,7 +450,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
}
#[#crate_name::async_trait::async_trait]
impl #generics #crate_name::OutputValueType for #self_ty {
impl #generics #crate_name::OutputValueType for #self_ty #where_clause {
async fn resolve(value: &Self, ctx: &#crate_name::ContextSelectionSet<'_>, pos: #crate_name::Pos) -> #crate_name::Result<#crate_name::serde_json::Value> {
#crate_name::do_resolve(ctx, value).await
}

View File

@ -9,6 +9,7 @@ pub fn generate(object_args: &args::Object, input: &mut DeriveInput) -> Result<T
let crate_name = get_crate_name(object_args.internal);
let ident = &input.ident;
let generics = &input.generics;
let where_clause = &generics.where_clause;
let extends = object_args.extends;
let s = match &mut input.data {
Data::Struct(e) => e,
@ -140,11 +141,11 @@ pub fn generate(object_args: &args::Object, input: &mut DeriveInput) -> Result<T
let expanded = quote! {
#input
impl #generics #ident {
impl #generics #ident #where_clause {
#(#getters)*
}
impl #generics #crate_name::Type for #ident #generics {
impl #generics #crate_name::Type for #ident #generics #where_clause {
fn type_name() -> std::borrow::Cow<'static, str> {
std::borrow::Cow::Borrowed(#gql_typename)
}
@ -166,7 +167,7 @@ pub fn generate(object_args: &args::Object, input: &mut DeriveInput) -> Result<T
}
#[#crate_name::async_trait::async_trait]
impl #generics #crate_name::ObjectType for #ident #generics {
impl #generics #crate_name::ObjectType for #ident #generics #where_clause {
async fn resolve_field(&self, ctx: &#crate_name::Context<'_>) -> #crate_name::Result<#crate_name::serde_json::Value> {
#(#resolvers)*
Err(#crate_name::QueryError::FieldNotFound {
@ -177,7 +178,7 @@ pub fn generate(object_args: &args::Object, input: &mut DeriveInput) -> Result<T
}
#[#crate_name::async_trait::async_trait]
impl #generics #crate_name::OutputValueType for #ident #generics {
impl #generics #crate_name::OutputValueType for #ident #generics #where_clause {
async fn resolve(value: &Self, ctx: &#crate_name::ContextSelectionSet<'_>, _pos: #crate_name::Pos) -> #crate_name::Result<#crate_name::serde_json::Value> {
#crate_name::do_resolve(ctx, value).await
}

View File

@ -22,6 +22,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
_ => return Err(Error::new_spanned(&item_impl.self_ty, "Invalid type")),
};
let generics = &item_impl.generics;
let where_clause = &generics.where_clause;
let gql_typename = object_args
.name
@ -270,7 +271,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
let expanded = quote! {
#item_impl
impl #generics #crate_name::Type for #self_ty {
impl #generics #crate_name::Type for #self_ty #where_clause {
fn type_name() -> std::borrow::Cow<'static, str> {
std::borrow::Cow::Borrowed(#gql_typename)
}
@ -293,7 +294,7 @@ pub fn generate(object_args: &args::Object, item_impl: &mut ItemImpl) -> Result<
}
#[#crate_name::async_trait::async_trait]
impl #crate_name::SubscriptionType for SubscriptionRoot {
impl #crate_name::SubscriptionType for #self_ty #where_clause {
#[allow(unused_variables)]
#[allow(bare_trait_objects)]
async fn create_field_stream<Query, Mutation>(