Add `SchemaBuilder::override_name` method. #437

This commit is contained in:
Sunli 2021-03-09 18:07:18 +08:00
parent f6c0c33885
commit 272fea205d
3 changed files with 20 additions and 1 deletions

View File

@ -9,6 +9,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Remove unnecessary Box from WebSocket messages.
- Export subscription type to Federation SDL. (for [GraphGate](https://github.com/async-graphql/graphgate) 😁)
- Add `extends` attribute for derive macros Subscription and MergedSubscription.
- Add `SchemaBuilder::override_name` method. [#437](https://github.com/async-graphql/async-graphql/issues/437)
## [2.5.11] - 2021-03-07

View File

@ -623,4 +623,16 @@ impl Registry {
None => {}
}
}
pub fn set_name<T: Type>(&mut self, new_name: String) {
match self.types.get_mut(&*T::type_name()) {
Some(MetaType::Scalar { name, .. }) => *name = new_name,
Some(MetaType::Object { name, .. }) => *name = new_name,
Some(MetaType::Interface { name, .. }) => *name = new_name,
Some(MetaType::Union { name, .. }) => *name = new_name,
Some(MetaType::Enum { name, .. }) => *name = new_name,
Some(MetaType::InputObject { name, .. }) => *name = new_name,
None => {}
}
}
}

View File

@ -105,12 +105,18 @@ impl<Query, Mutation, Subscription> SchemaBuilder<Query, Mutation, Subscription>
self
}
/// Override the description of the specified type.
/// Override the name of the specified type.
pub fn override_description<T: Type>(mut self, desc: &'static str) -> Self {
self.registry.set_description::<T>(desc);
self
}
/// Override the name of the specified type.
pub fn override_name<T: Type>(mut self, new_name: impl Into<String>) -> Self {
self.registry.set_name::<T>(new_name.into());
self
}
/// Build schema.
pub fn finish(mut self) -> Schema<Query, Mutation, Subscription> {
// federation