Allows to get the actual field name and alias in ResolveInfo. #551

This commit is contained in:
Sunli 2021-06-29 09:30:26 +08:00
parent 3b5b0eee25
commit 1b173b7588
4 changed files with 16 additions and 0 deletions

View File

@ -365,6 +365,8 @@ pub fn generate(
path_node: ctx_selection_set.path_node.as_ref().unwrap(),
parent_type: #gql_typename,
return_type: &<<#stream_ty as #crate_name::futures_util::stream::Stream>::Item as #crate_name::Type>::qualified_type_name(),
name: field.node.name.node.as_str(),
alias: field.node.alias.as_ref().map(|alias| alias.node.as_str()),
};
let resolve_fut = async {
#crate_name::OutputType::resolve(&msg, &ctx_selection_set, &*field)

View File

@ -103,6 +103,12 @@ pub struct ResolveInfo<'a> {
/// Current return type, is qualified name.
pub return_type: &'a str,
/// Current field name
pub name: &'a str,
/// Current field alias
pub alias: Option<&'a str>,
}
type RequestFut<'a> = &'a mut (dyn Future<Output = Response> + Send + Unpin);

View File

@ -204,6 +204,12 @@ impl<'a> Fields<'a> {
));
}
},
name: field.node.name.node.as_str(),
alias: field
.node
.alias
.as_ref()
.map(|alias| alias.node.as_str()),
};
let resolve_fut = root.resolve_field(&ctx_field);

View File

@ -23,6 +23,8 @@ pub async fn resolve_list<'a, T: OutputType + 'a>(
path_node: ctx_idx.path_node.as_ref().unwrap(),
parent_type: &Vec::<T>::type_name(),
return_type: &T::qualified_type_name(),
name: field.node.name.node.as_str(),
alias: field.node.alias.as_ref().map(|alias| alias.node.as_str()),
};
let resolve_fut = async {
OutputType::resolve(&item, &ctx_idx, field)