diff --git a/derive/src/args.rs b/derive/src/args.rs index a9cca4a5..faf69cd6 100644 --- a/derive/src/args.rs +++ b/derive/src/args.rs @@ -151,6 +151,8 @@ pub struct SimpleObjectField { #[darling(default)] pub requires: Option, #[darling(default)] + pub shareable: bool, + #[darling(default)] pub guard: Option>, #[darling(default)] pub visible: Option, @@ -278,6 +280,7 @@ pub struct ObjectField { pub external: bool, pub provides: Option, pub requires: Option, + pub shareable: bool, pub guard: Option>, pub visible: Option, pub complexity: Option, @@ -491,6 +494,8 @@ pub struct InterfaceField { pub requires: Option, #[darling(default)] pub visible: Option, + #[darling(default)] + pub shareable: bool, } #[derive(FromVariant)] @@ -764,6 +769,7 @@ pub struct ComplexObjectField { pub external: bool, pub provides: Option, pub requires: Option, + pub shareable: bool, pub guard: Option>, pub visible: Option, pub complexity: Option, diff --git a/derive/src/complex_object.rs b/derive/src/complex_object.rs index 29c75864..24e34cee 100644 --- a/derive/src/complex_object.rs +++ b/derive/src/complex_object.rs @@ -172,6 +172,7 @@ pub fn generate( .unwrap_or_else(|| quote! {::std::option::Option::None}); let field_deprecation = gen_deprecation(&method_args.deprecation, &crate_name); let external = method_args.external; + let shareable = method_args.shareable; let requires = match &method_args.requires { Some(requires) => quote! { ::std::option::Option::Some(#requires) }, None => quote! { ::std::option::Option::None }, @@ -365,6 +366,7 @@ pub fn generate( external: #external, provides: #provides, requires: #requires, + shareable: #shareable, visible: #visible, compute_complexity: #complexity, })); diff --git a/derive/src/interface.rs b/derive/src/interface.rs index a0261358..6a89798e 100644 --- a/derive/src/interface.rs +++ b/derive/src/interface.rs @@ -137,6 +137,7 @@ pub fn generate(interface_args: &args::Interface) -> GeneratorResult GeneratorResult quote! { ::std::option::Option::Some(#requires) }, None => quote! { ::std::option::Option::None }, @@ -507,6 +508,7 @@ pub fn generate( external: #external, provides: #provides, requires: #requires, + shareable: #shareable, visible: #visible, compute_complexity: #complexity, }); diff --git a/derive/src/simple_object.rs b/derive/src/simple_object.rs index 47685a9e..73bdb9c9 100644 --- a/derive/src/simple_object.rs +++ b/derive/src/simple_object.rs @@ -127,6 +127,7 @@ pub fn generate(object_args: &args::SimpleObject) -> GeneratorResult quote! { ::std::option::Option::Some(#requires) }, None => quote! { ::std::option::Option::None }, @@ -174,6 +175,7 @@ pub fn generate(object_args: &args::SimpleObject) -> GeneratorResult, pub provides: Option<&'static str>, pub visible: Option, + pub shareable: bool, pub compute_complexity: Option, } @@ -619,6 +620,7 @@ impl Registry { external: false, requires: None, provides: None, + shareable: false, visible: None, compute_complexity: None, }, @@ -664,6 +666,7 @@ impl Registry { external: false, requires: None, provides: None, + shareable: false, visible: None, compute_complexity: None, }, @@ -694,6 +697,7 @@ impl Registry { external: false, requires: None, provides: None, + shareable: false, visible: None, compute_complexity: None, }, diff --git a/src/types/query_root.rs b/src/types/query_root.rs index 7dbf9526..6043dd05 100644 --- a/src/types/query_root.rs +++ b/src/types/query_root.rs @@ -131,6 +131,7 @@ impl OutputType for QueryRoot { external: false, requires: None, provides: None, + shareable: false, visible: None, compute_complexity: None, }, @@ -162,6 +163,7 @@ impl OutputType for QueryRoot { external: false, requires: None, provides: None, + shareable: false, visible: None, compute_complexity: None, },