From a51abb72849eb038ca9b6fc9519e80929de9f7da Mon Sep 17 00:00:00 2001 From: Sunli Date: Tue, 9 Mar 2021 18:07:18 +0800 Subject: [PATCH] Add `SchemaBuilder::override_name` method. #437 --- CHANGELOG.md | 1 + src/registry/mod.rs | 12 ++++++++++++ src/schema.rs | 8 +++++++- 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0cf01b3c..a9dec17c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/src/registry/mod.rs b/src/registry/mod.rs index 03518d00..6e3d595e 100644 --- a/src/registry/mod.rs +++ b/src/registry/mod.rs @@ -623,4 +623,16 @@ impl Registry { None => {} } } + + pub fn set_name(&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 => {} + } + } } diff --git a/src/schema.rs b/src/schema.rs index 551c6e32..2a3034b7 100644 --- a/src/schema.rs +++ b/src/schema.rs @@ -105,12 +105,18 @@ impl SchemaBuilder self } - /// Override the description of the specified type. + /// Override the name of the specified type. pub fn override_description(mut self, desc: &'static str) -> Self { self.registry.set_description::(desc); self } + /// Override the name of the specified type. + pub fn override_name(mut self, new_name: impl Into) -> Self { + self.registry.set_name::(new_name.into()); + self + } + /// Build schema. pub fn finish(mut self) -> Schema { // federation