File tree Expand file tree Collapse file tree 3 files changed +15
-17
lines changed Expand file tree Collapse file tree 3 files changed +15
-17
lines changed Original file line number Diff line number Diff line change @@ -24,11 +24,7 @@ impl GqlInput {
2424 let ty = field. type_ . to_rust ( & context, "" ) ;
2525 let original_name = & field. name ;
2626 let snake_case_name = field. name . to_snake_case ( ) ;
27- let rename = if snake_case_name. as_str ( ) != original_name. as_str ( ) {
28- quote ! ( #[ serde( rename = #original_name) ] )
29- } else {
30- quote ! ( )
31- } ;
27+ let rename = :: shared:: field_rename_annotation ( & original_name, & snake_case_name) ;
3228 let name = Ident :: new ( & snake_case_name, Span :: call_site ( ) ) ;
3329
3430 quote ! ( #rename pub #name: #ty)
Original file line number Diff line number Diff line change @@ -51,12 +51,9 @@ impl Operation {
5151 let name = & variable. name ;
5252 let ty = variable. ty . to_rust ( context, "" ) ;
5353 let snake_case_name = name. to_snake_case ( ) ;
54- let rename = if snake_case_name. as_str ( ) != name. as_str ( ) {
55- quote ! ( #[ serde( rename = #name) ] )
56- } else {
57- quote ! ( )
58- } ;
54+ let rename = :: shared:: field_rename_annotation ( & name, & snake_case_name) ;
5955 let name = Ident :: new ( & snake_case_name, Span :: call_site ( ) ) ;
56+
6057 quote ! ( #rename pub #name: #ty)
6158 } ) ;
6259
Original file line number Diff line number Diff line change @@ -21,13 +21,7 @@ pub(crate) fn render_object_field(
2121 }
2222
2323 let snake_case_name = field_name. to_snake_case ( ) ;
24-
25- let rename = if snake_case_name != field_name {
26- quote ! ( #[ serde( rename = #field_name) ] )
27- } else {
28- quote ! ( )
29- } ;
30-
24+ let rename = :: shared:: field_rename_annotation ( & field_name, & snake_case_name) ;
3125 let name_ident = Ident :: new ( & snake_case_name, Span :: call_site ( ) ) ;
3226
3327 quote ! ( #description #rename pub #name_ident: #field_type)
@@ -104,3 +98,14 @@ pub(crate) fn response_fields_for_selection(
10498 }
10599 } ) . collect ( )
106100}
101+
102+ /// Given the GraphQL schema name for an object/interface/input object field and
103+ /// the equivalent rust name, produces a serde annotation to map them during
104+ /// (de)serialization if it is necessary, otherwise an empty TokenStream.
105+ pub ( crate ) fn field_rename_annotation ( graphql_name : & str , rust_name : & str ) -> TokenStream {
106+ if graphql_name != rust_name {
107+ quote ! ( #[ serde( rename = #graphql_name) ] )
108+ } else {
109+ quote ! ( )
110+ }
111+ }
You can’t perform that action at this time.
0 commit comments