first passing build with shareable

This commit is contained in:
Damien Pontifex 2022-08-17 09:29:43 +08:00
parent b537f0f048
commit 66271a54bd
9 changed files with 24 additions and 0 deletions

View File

@ -151,6 +151,8 @@ pub struct SimpleObjectField {
#[darling(default)]
pub requires: Option<String>,
#[darling(default)]
pub shareable: bool,
#[darling(default)]
pub guard: Option<SpannedValue<String>>,
#[darling(default)]
pub visible: Option<Visible>,
@ -278,6 +280,7 @@ pub struct ObjectField {
pub external: bool,
pub provides: Option<String>,
pub requires: Option<String>,
pub shareable: bool,
pub guard: Option<SpannedValue<String>>,
pub visible: Option<Visible>,
pub complexity: Option<ComplexityType>,
@ -491,6 +494,8 @@ pub struct InterfaceField {
pub requires: Option<String>,
#[darling(default)]
pub visible: Option<Visible>,
#[darling(default)]
pub shareable: bool,
}
#[derive(FromVariant)]
@ -764,6 +769,7 @@ pub struct ComplexObjectField {
pub external: bool,
pub provides: Option<String>,
pub requires: Option<String>,
pub shareable: bool,
pub guard: Option<SpannedValue<String>>,
pub visible: Option<Visible>,
pub complexity: Option<ComplexityType>,

View File

@ -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,
}));

View File

@ -137,6 +137,7 @@ pub fn generate(interface_args: &args::Interface) -> GeneratorResult<TokenStream
provides,
requires,
visible,
shareable,
} in &interface_args.fields
{
let (name, method_name) = if let Some(method) = method {
@ -274,6 +275,7 @@ pub fn generate(interface_args: &args::Interface) -> GeneratorResult<TokenStream
external: #external,
provides: #provides,
requires: #requires,
shareable: #shareable,
visible: #visible,
compute_complexity: ::std::option::Option::None,
});

View File

@ -315,6 +315,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 },
@ -507,6 +508,7 @@ pub fn generate(
external: #external,
provides: #provides,
requires: #requires,
shareable: #shareable,
visible: #visible,
compute_complexity: #complexity,
});

View File

@ -127,6 +127,7 @@ pub fn generate(object_args: &args::SimpleObject) -> GeneratorResult<TokenStream
.unwrap_or_else(|| quote! {::std::option::Option::None});
let field_deprecation = gen_deprecation(&field.deprecation, &crate_name);
let external = field.external;
let shareable = field.shareable;
let requires = match &field.requires {
Some(requires) => quote! { ::std::option::Option::Some(#requires) },
None => quote! { ::std::option::Option::None },
@ -174,6 +175,7 @@ pub fn generate(object_args: &args::SimpleObject) -> GeneratorResult<TokenStream
external: #external,
provides: #provides,
requires: #requires,
shareable: #shareable,
visible: #visible,
compute_complexity: ::std::option::Option::None,
});

View File

@ -267,6 +267,7 @@ pub fn generate(
external: false,
requires: ::std::option::Option::None,
provides: ::std::option::Option::None,
shareable: false,
visible: #visible,
compute_complexity: #complexity,
});

View File

@ -170,6 +170,9 @@ impl Registry {
if let Some(provides) = field.provides {
write!(sdl, " @provides(fields: \"{}\")", provides).ok();
}
if field.shareable {
write!(sdl, " @shareable").ok();
}
}
writeln!(sdl).ok();

View File

@ -166,6 +166,7 @@ pub struct MetaField {
pub requires: Option<&'static str>,
pub provides: Option<&'static str>,
pub visible: Option<MetaVisibleFn>,
pub shareable: bool,
pub compute_complexity: Option<ComplexityType>,
}
@ -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,
},

View File

@ -131,6 +131,7 @@ impl<T: ObjectType> OutputType for QueryRoot<T> {
external: false,
requires: None,
provides: None,
shareable: false,
visible: None,
compute_complexity: None,
},
@ -162,6 +163,7 @@ impl<T: ObjectType> OutputType for QueryRoot<T> {
external: false,
requires: None,
provides: None,
shareable: false,
visible: None,
compute_complexity: None,
},