Skip to content

Commit 1448d70

Browse files
committed
Validation schema does not require Introspection support
1 parent 5b88b3e commit 1448d70

File tree

3 files changed

+20
-41
lines changed

3 files changed

+20
-41
lines changed

samples/validation/schema/CMakeLists.txt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ cmake_minimum_required(VERSION 3.8.2)
66
include(${CMAKE_CURRENT_SOURCE_DIR}/../../../cmake/cppgraphqlgen-functions.cmake)
77

88
if(GRAPHQL_UPDATE_SAMPLES)
9-
update_graphql_schema_files(validation schema.validation.graphql Validation validation --stubs --merge-files)
9+
update_graphql_schema_files(validation schema.validation.graphql Validation validation --stubs --merge-files --no-introspection)
1010
endif()
1111

12-
add_graphql_schema_target(validation)
12+
add_graphql_schema_no_introspection_target(validation)

samples/validation/schema/ValidationSchema.cpp

Lines changed: 18 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -119,15 +119,12 @@ Query::Query(std::unique_ptr<Concept>&& pimpl)
119119
{ R"gql(dog)gql"sv, [this](service::ResolverParams&& params) { return resolveDog(std::move(params)); } },
120120
{ R"gql(pet)gql"sv, [this](service::ResolverParams&& params) { return resolvePet(std::move(params)); } },
121121
{ R"gql(human)gql"sv, [this](service::ResolverParams&& params) { return resolveHuman(std::move(params)); } },
122-
{ R"gql(__type)gql"sv, [this](service::ResolverParams&& params) { return resolve_type(std::move(params)); } },
123122
{ R"gql(findDog)gql"sv, [this](service::ResolverParams&& params) { return resolveFindDog(std::move(params)); } },
124-
{ R"gql(__schema)gql"sv, [this](service::ResolverParams&& params) { return resolve_schema(std::move(params)); } },
125123
{ R"gql(catOrDog)gql"sv, [this](service::ResolverParams&& params) { return resolveCatOrDog(std::move(params)); } },
126124
{ R"gql(arguments)gql"sv, [this](service::ResolverParams&& params) { return resolveArguments(std::move(params)); } },
127125
{ R"gql(__typename)gql"sv, [this](service::ResolverParams&& params) { return resolve_typename(std::move(params)); } },
128126
{ R"gql(booleanList)gql"sv, [this](service::ResolverParams&& params) { return resolveBooleanList(std::move(params)); } }
129127
})
130-
, _schema(GetSchema())
131128
, _pimpl(std::move(pimpl))
132129
{
133130
}
@@ -219,20 +216,6 @@ service::AwaitableResolver Query::resolve_typename(service::ResolverParams&& par
219216
return service::ModifiedResult<std::string>::convert(std::string{ R"gql(Query)gql" }, std::move(params));
220217
}
221218

222-
service::AwaitableResolver Query::resolve_schema(service::ResolverParams&& params)
223-
{
224-
return service::ModifiedResult<service::Object>::convert(std::static_pointer_cast<service::Object>(std::make_shared<introspection::object::Schema>(std::make_shared<introspection::Schema>(_schema))), std::move(params));
225-
}
226-
227-
service::AwaitableResolver Query::resolve_type(service::ResolverParams&& params)
228-
{
229-
auto argName = service::ModifiedArgument<std::string>::require("name", params.arguments);
230-
const auto& baseType = _schema->LookupType(argName);
231-
std::shared_ptr<introspection::object::Type> result { baseType ? std::make_shared<introspection::object::Type>(std::make_shared<introspection::Type>(baseType)) : nullptr };
232-
233-
return service::ModifiedResult<introspection::object::Type>::convert<service::TypeModifier::Nullable>(result, std::move(params));
234-
}
235-
236219
Dog::Dog(std::unique_ptr<Concept>&& pimpl)
237220
: service::Object({
238221
"Pet",
@@ -822,7 +805,7 @@ void AddTypesToSchema(const std::shared_ptr<schema::Schema>& schema)
822805
schema->AddType(R"gql(DogCommand)gql"sv, typeDogCommand);
823806
auto typeCatCommand = schema::EnumType::Make(R"gql(CatCommand)gql"sv, R"md()md"sv);
824807
schema->AddType(R"gql(CatCommand)gql"sv, typeCatCommand);
825-
auto typeComplexInput = schema::InputObjectType::Make(R"gql(ComplexInput)gql"sv, R"md([Example 155](http://spec.graphql.org/June2018/#example-f3185))md"sv);
808+
auto typeComplexInput = schema::InputObjectType::Make(R"gql(ComplexInput)gql"sv, R"md()md"sv);
826809
schema->AddType(R"gql(ComplexInput)gql"sv, typeComplexInput);
827810
auto typeCatOrDog = schema::UnionType::Make(R"gql(CatOrDog)gql"sv, R"md()md"sv);
828811
schema->AddType(R"gql(CatOrDog)gql"sv, typeCatOrDog);
@@ -834,7 +817,7 @@ void AddTypesToSchema(const std::shared_ptr<schema::Schema>& schema)
834817
schema->AddType(R"gql(Sentient)gql"sv, typeSentient);
835818
auto typePet = schema::InterfaceType::Make(R"gql(Pet)gql"sv, R"md()md"sv);
836819
schema->AddType(R"gql(Pet)gql"sv, typePet);
837-
auto typeQuery = schema::ObjectType::Make(R"gql(Query)gql"sv, R"md(GraphQL validation [sample](http://spec.graphql.org/June2018/#example-26a9d))md");
820+
auto typeQuery = schema::ObjectType::Make(R"gql(Query)gql"sv, R"md()md");
838821
schema->AddType(R"gql(Query)gql"sv, typeQuery);
839822
auto typeDog = schema::ObjectType::Make(R"gql(Dog)gql"sv, R"md()md");
840823
schema->AddType(R"gql(Dog)gql"sv, typeDog);
@@ -844,15 +827,15 @@ void AddTypesToSchema(const std::shared_ptr<schema::Schema>& schema)
844827
schema->AddType(R"gql(Human)gql"sv, typeHuman);
845828
auto typeCat = schema::ObjectType::Make(R"gql(Cat)gql"sv, R"md()md");
846829
schema->AddType(R"gql(Cat)gql"sv, typeCat);
847-
auto typeMutation = schema::ObjectType::Make(R"gql(Mutation)gql"sv, R"md(Support for [Counter Example 94](http://spec.graphql.org/June2018/#example-77c2e))md");
830+
auto typeMutation = schema::ObjectType::Make(R"gql(Mutation)gql"sv, R"md()md");
848831
schema->AddType(R"gql(Mutation)gql"sv, typeMutation);
849-
auto typeMutateDogResult = schema::ObjectType::Make(R"gql(MutateDogResult)gql"sv, R"md(Support for [Counter Example 94](http://spec.graphql.org/June2018/#example-77c2e))md");
832+
auto typeMutateDogResult = schema::ObjectType::Make(R"gql(MutateDogResult)gql"sv, R"md()md");
850833
schema->AddType(R"gql(MutateDogResult)gql"sv, typeMutateDogResult);
851-
auto typeSubscription = schema::ObjectType::Make(R"gql(Subscription)gql"sv, R"md(Support for [Example 97](http://spec.graphql.org/June2018/#example-5bbc3) - [Counter Example 101](http://spec.graphql.org/June2018/#example-2353b))md");
834+
auto typeSubscription = schema::ObjectType::Make(R"gql(Subscription)gql"sv, R"md()md");
852835
schema->AddType(R"gql(Subscription)gql"sv, typeSubscription);
853-
auto typeMessage = schema::ObjectType::Make(R"gql(Message)gql"sv, R"md(Support for [Example 97](http://spec.graphql.org/June2018/#example-5bbc3) - [Counter Example 101](http://spec.graphql.org/June2018/#example-2353b))md");
836+
auto typeMessage = schema::ObjectType::Make(R"gql(Message)gql"sv, R"md()md");
854837
schema->AddType(R"gql(Message)gql"sv, typeMessage);
855-
auto typeArguments = schema::ObjectType::Make(R"gql(Arguments)gql"sv, R"md(Support for [Example 120](http://spec.graphql.org/June2018/#example-1891c))md");
838+
auto typeArguments = schema::ObjectType::Make(R"gql(Arguments)gql"sv, R"md()md");
856839
schema->AddType(R"gql(Arguments)gql"sv, typeArguments);
857840

858841
typeDogCommand->AddEnumValues({
@@ -891,14 +874,14 @@ void AddTypesToSchema(const std::shared_ptr<schema::Schema>& schema)
891874

892875
typeQuery->AddFields({
893876
schema::Field::Make(R"gql(dog)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("Dog")),
894-
schema::Field::Make(R"gql(human)gql"sv, R"md(Support for [Counter Example 116](http://spec.graphql.org/June2018/#example-77c2e))md"sv, std::nullopt, schema->LookupType("Human")),
895-
schema::Field::Make(R"gql(pet)gql"sv, R"md(Support for [Counter Example 116](http://spec.graphql.org/June2018/#example-77c2e))md"sv, std::nullopt, schema->LookupType("Pet")),
896-
schema::Field::Make(R"gql(catOrDog)gql"sv, R"md(Support for [Counter Example 116](http://spec.graphql.org/June2018/#example-77c2e))md"sv, std::nullopt, schema->LookupType("CatOrDog")),
897-
schema::Field::Make(R"gql(arguments)gql"sv, R"md(Support for [Example 120](http://spec.graphql.org/June2018/#example-1891c))md"sv, std::nullopt, schema->LookupType("Arguments")),
898-
schema::Field::Make(R"gql(findDog)gql"sv, R"md([Example 155](http://spec.graphql.org/June2018/#example-f3185))md"sv, std::nullopt, schema->LookupType("Dog"), {
877+
schema::Field::Make(R"gql(human)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("Human")),
878+
schema::Field::Make(R"gql(pet)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("Pet")),
879+
schema::Field::Make(R"gql(catOrDog)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("CatOrDog")),
880+
schema::Field::Make(R"gql(arguments)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("Arguments")),
881+
schema::Field::Make(R"gql(findDog)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("Dog"), {
899882
schema::InputValue::Make(R"gql(complex)gql"sv, R"md()md"sv, schema->LookupType("ComplexInput"), R"gql()gql"sv)
900883
}),
901-
schema::Field::Make(R"gql(booleanList)gql"sv, R"md([Example 155](http://spec.graphql.org/June2018/#example-f3185))md"sv, std::nullopt, schema->LookupType("Boolean"), {
884+
schema::Field::Make(R"gql(booleanList)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("Boolean"), {
902885
schema::InputValue::Make(R"gql(booleanListArg)gql"sv, R"md()md"sv, schema->WrapType(introspection::TypeKind::LIST, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Boolean"))), R"gql()gql"sv)
903886
})
904887
});
@@ -929,7 +912,7 @@ void AddTypesToSchema(const std::shared_ptr<schema::Schema>& schema)
929912
});
930913
typeHuman->AddFields({
931914
schema::Field::Make(R"gql(name)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("String"))),
932-
schema::Field::Make(R"gql(pets)gql"sv, R"md(Support for [Counter Example 136](http://spec.graphql.org/June2018/#example-6bbad))md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->WrapType(introspection::TypeKind::LIST, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Pet")))))
915+
schema::Field::Make(R"gql(pets)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->WrapType(introspection::TypeKind::LIST, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Pet")))))
933916
});
934917
typeCat->AddInterfaces({
935918
typePet
@@ -949,15 +932,15 @@ void AddTypesToSchema(const std::shared_ptr<schema::Schema>& schema)
949932
schema::Field::Make(R"gql(id)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("ID")))
950933
});
951934
typeSubscription->AddFields({
952-
schema::Field::Make(R"gql(newMessage)gql"sv, R"md(Support for [Example 97](http://spec.graphql.org/June2018/#example-5bbc3) - [Counter Example 101](http://spec.graphql.org/June2018/#example-2353b))md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Message"))),
953-
schema::Field::Make(R"gql(disallowedSecondRootField)gql"sv, R"md(Support for [Counter Example 99](http://spec.graphql.org/June2018/#example-3997d) - [Counter Example 100](http://spec.graphql.org/June2018/#example-18466))md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Boolean")))
935+
schema::Field::Make(R"gql(newMessage)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Message"))),
936+
schema::Field::Make(R"gql(disallowedSecondRootField)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Boolean")))
954937
});
955938
typeMessage->AddFields({
956939
schema::Field::Make(R"gql(body)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("String")),
957940
schema::Field::Make(R"gql(sender)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("ID")))
958941
});
959942
typeArguments->AddFields({
960-
schema::Field::Make(R"gql(multipleReqs)gql"sv, R"md(Support for [Example 121](http://spec.graphql.org/June2018/#example-18fab))md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Int")), {
943+
schema::Field::Make(R"gql(multipleReqs)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Int")), {
961944
schema::InputValue::Make(R"gql(x)gql"sv, R"md()md"sv, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Int")), R"gql()gql"sv),
962945
schema::InputValue::Make(R"gql(y)gql"sv, R"md()md"sv, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Int")), R"gql()gql"sv)
963946
}),
@@ -996,7 +979,7 @@ std::shared_ptr<schema::Schema> GetSchema()
996979

997980
if (!schema)
998981
{
999-
schema = std::make_shared<schema::Schema>(false);
982+
schema = std::make_shared<schema::Schema>(true);
1000983
introspection::AddTypesToSchema(schema);
1001984
AddTypesToSchema(schema);
1002985
s_wpSchema = schema;

samples/validation/schema/ValidationSchema.h

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -663,10 +663,6 @@ class Query
663663
service::AwaitableResolver resolveBooleanList(service::ResolverParams&& params);
664664

665665
service::AwaitableResolver resolve_typename(service::ResolverParams&& params);
666-
service::AwaitableResolver resolve_schema(service::ResolverParams&& params);
667-
service::AwaitableResolver resolve_type(service::ResolverParams&& params);
668-
669-
std::shared_ptr<schema::Schema> _schema;
670666

671667
struct Concept
672668
{

0 commit comments

Comments
 (0)