Skip to content

Commit 5bfb60d

Browse files
committed
Add description to object fields
1 parent 12175af commit 5bfb60d

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

graphql_query_derive/src/shared.rs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,24 @@ use proc_macro2::{Ident, Span, TokenStream};
55
use query::QueryContext;
66
use selection::*;
77

8-
pub(crate) fn render_object_field(field_name: &str, field_type: &TokenStream) -> TokenStream {
8+
pub(crate) fn render_object_field(
9+
field_name: &str,
10+
field_type: &TokenStream,
11+
description: Option<&str>,
12+
) -> TokenStream {
13+
let description = description.map(|s| quote!(#[doc = #s]));
914
if field_name == "type" {
1015
let name_ident = Ident::new(&format!("{}_", field_name), Span::call_site());
1116
return quote! {
17+
#description
1218
#[serde(rename = #field_name)]
1319
pub #name_ident: #field_type
1420
};
1521
}
1622

1723
let name_ident = Ident::new(&field_name.to_snake_case(), Span::call_site());
1824

19-
quote!(pub #name_ident: #field_type)
25+
quote!(#description pub #name_ident: #field_type)
2026
}
2127

2228
pub(crate) fn field_impls_for_selection(
@@ -62,16 +68,19 @@ pub fn response_fields_for_selection(
6268
SelectionItem::Field(f) => {
6369
let name = &f.name;
6470

65-
let ty = &schema_fields
71+
let schema_field = &schema_fields
6672
.iter()
6773
.find(|field| field.name.as_str() == name.as_str())
68-
.ok_or_else(|| format_err!("Could not find field: {}", name.as_str()))?
69-
.type_;
70-
let ty = ty.to_rust(
74+
.ok_or_else(|| format_err!("Could not find field: {}", name.as_str()))?;
75+
let ty = schema_field.type_.to_rust(
7176
context,
7277
&format!("{}{}", prefix.to_camel_case(), name.to_camel_case()),
7378
);
74-
Ok(render_object_field(name, &ty))
79+
Ok(render_object_field(
80+
name,
81+
&ty,
82+
schema_field.description.as_ref().map(|s| s.as_str()),
83+
))
7584
}
7685
SelectionItem::FragmentSpread(fragment) => {
7786
let field_name =

0 commit comments

Comments
 (0)