File tree 3 files changed +15
-17
lines changed
3 files changed +15
-17
lines changed Original file line number Diff line number Diff line change @@ -24,11 +24,7 @@ impl GqlInput {
24
24
let ty = field. type_ . to_rust ( & context, "" ) ;
25
25
let original_name = & field. name ;
26
26
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) ;
32
28
let name = Ident :: new ( & snake_case_name, Span :: call_site ( ) ) ;
33
29
34
30
quote ! ( #rename pub #name: #ty)
Original file line number Diff line number Diff line change @@ -51,12 +51,9 @@ impl Operation {
51
51
let name = & variable. name ;
52
52
let ty = variable. ty . to_rust ( context, "" ) ;
53
53
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) ;
59
55
let name = Ident :: new ( & snake_case_name, Span :: call_site ( ) ) ;
56
+
60
57
quote ! ( #rename pub #name: #ty)
61
58
} ) ;
62
59
Original file line number Diff line number Diff line change @@ -21,13 +21,7 @@ pub(crate) fn render_object_field(
21
21
}
22
22
23
23
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) ;
31
25
let name_ident = Ident :: new ( & snake_case_name, Span :: call_site ( ) ) ;
32
26
33
27
quote ! ( #description #rename pub #name_ident: #field_type)
@@ -104,3 +98,14 @@ pub(crate) fn response_fields_for_selection(
104
98
}
105
99
} ) . collect ( )
106
100
}
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