Skip to content

Commit 129ba9b

Browse files
committed
Support extern_enums in generate_output_struct
1 parent 21de3ec commit 129ba9b

File tree

1 file changed

+8
-5
lines changed
  • shopify_function_macro/src

1 file changed

+8
-5
lines changed

shopify_function_macro/src/lib.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)