@@ -339,7 +339,7 @@ pub fn shopify_function_target(
339339 output_result_type,
340340 & target_handle_string. to_case( Case :: Camel )
341341 ) ;
342- let output_struct = generate_output_struct ( & output_query, schema_path. as_str ( ) ) ;
342+ let output_struct = generate_output_struct ( & output_query, schema_path. as_str ( ) , extern_enums . as_deref ( ) ) ;
343343
344344 if let Err ( error) = extract_shopify_function_return_type ( & ast) {
345345 return error. to_compile_error ( ) . into ( ) ;
@@ -417,7 +417,7 @@ pub fn generate_types(attr: proc_macro::TokenStream) -> proc_macro::TokenStream
417417 ) ;
418418 let output_query =
419419 "mutation Output($result: FunctionResult!) {\n handleResult(result: $result)\n }\n " ;
420- let output_struct = generate_output_struct ( output_query, & schema_path) ;
420+ let output_struct = generate_output_struct ( output_query, & schema_path, extern_enums . as_deref ( ) ) ;
421421
422422 quote ! {
423423 #input_struct
@@ -451,18 +451,21 @@ fn generate_input_struct(
451451 }
452452}
453453
454- fn graphql_codegen_options ( operation_name : String ) -> GraphQLClientCodegenOptions {
454+ fn graphql_codegen_options ( operation_name : String , extern_enums : Option < & [ String ] > ) -> GraphQLClientCodegenOptions {
455455 let mut options = GraphQLClientCodegenOptions :: new ( CodegenMode :: Derive ) ;
456456 options. set_operation_name ( operation_name) ;
457457 options. set_response_derives ( "Clone,Debug,PartialEq,Deserialize,Serialize" . to_string ( ) ) ;
458458 options. set_variables_derives ( "Clone,Debug,PartialEq,Deserialize" . to_string ( ) ) ;
459459 options. set_skip_serializing_none ( true ) ;
460+ if let Some ( extern_enums) = extern_enums {
461+ options. set_extern_enums ( extern_enums. to_vec ( ) ) ;
462+ }
460463
461464 options
462465}
463466
464- fn generate_output_struct ( query : & str , schema_path : & str ) -> proc_macro2:: TokenStream {
465- let options = graphql_codegen_options ( "Output" . to_string ( ) ) ;
467+ fn generate_output_struct ( query : & str , schema_path : & str , extern_enums : Option < & [ String ] > ) -> proc_macro2:: TokenStream {
468+ let options = graphql_codegen_options ( "Output" . to_string ( ) , extern_enums ) ;
466469 let cargo_manifest_dir =
467470 std:: env:: var ( "CARGO_MANIFEST_DIR" ) . expect ( "Error reading CARGO_MANIFEST_DIR from env" ) ;
468471 let schema_path = Path :: new ( & cargo_manifest_dir) . join ( schema_path) ;
0 commit comments