Skip to content

Commit eaa0619

Browse files
committed
Add an enum type to the Query to test clientgen
1 parent 09c967a commit eaa0619

File tree

12 files changed

+101
-4
lines changed

12 files changed

+101
-4
lines changed

samples/client/QueryClient.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,9 @@ const std::string& GetRequestText() noexcept
5454
}
5555
}
5656
}
57+
58+
# Read a field with an enum type
59+
testTaskState
5760
}
5861
)gql"s;
5962

samples/client/QueryClient.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,9 @@ namespace graphql::query::Query {
6666
** }
6767
** }
6868
** }
69+
**
70+
** # Read a field with an enum type
71+
** testTaskState
6972
** }
7073
**
7174
**/
@@ -76,6 +79,14 @@ const std::string& GetRequestText() noexcept;
7679
// Return a pre-parsed, pre-validated request object.
7780
const peg::ast& GetRequestObject() noexcept;
7881

82+
enum class TaskState
83+
{
84+
New,
85+
Started,
86+
Complete,
87+
Unassigned,
88+
};
89+
7990
struct Response
8091
{
8192
struct appointments_AppointmentConnection
@@ -138,6 +149,8 @@ struct Response
138149
};
139150

140151
unreadCounts_FolderConnection unreadCounts;
152+
153+
std::optional<TaskState> testTaskState;
141154
};
142155

143156
} /* namespace graphql::query::Query */

samples/query.today.graphql

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,4 +33,7 @@ query {
3333
}
3434
}
3535
}
36+
37+
# Read a field with an enum type
38+
testTaskState
3639
}

samples/schema.today.graphql

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ type Query {
3232
unimplemented: String!
3333

3434
expensive: [Expensive!]!
35+
36+
testTaskState: TaskState
3537
}
3638

3739
"Node interface for Relay support"

samples/separate/QueryObject.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ Query::Query()
3232
{ R"gql(__typename)gql"sv, [this](service::ResolverParams&& params) { return resolve_typename(std::move(params)); } },
3333
{ R"gql(appointments)gql"sv, [this](service::ResolverParams&& params) { return resolveAppointments(std::move(params)); } },
3434
{ R"gql(unreadCounts)gql"sv, [this](service::ResolverParams&& params) { return resolveUnreadCounts(std::move(params)); } },
35+
{ R"gql(testTaskState)gql"sv, [this](service::ResolverParams&& params) { return resolveTestTaskState(std::move(params)); } },
3536
{ R"gql(unimplemented)gql"sv, [this](service::ResolverParams&& params) { return resolveUnimplemented(std::move(params)); } },
3637
{ R"gql(appointmentsById)gql"sv, [this](service::ResolverParams&& params) { return resolveAppointmentsById(std::move(params)); } },
3738
{ R"gql(unreadCountsById)gql"sv, [this](service::ResolverParams&& params) { return resolveUnreadCountsById(std::move(params)); } }
@@ -228,6 +229,21 @@ std::future<service::ResolverResult> Query::resolveExpensive(service::ResolverPa
228229
return service::ModifiedResult<Expensive>::convert<service::TypeModifier::List>(std::move(result), std::move(params));
229230
}
230231

232+
service::FieldResult<std::optional<TaskState>> Query::getTestTaskState(service::FieldParams&&) const
233+
{
234+
throw std::runtime_error(R"ex(Query::getTestTaskState is not implemented)ex");
235+
}
236+
237+
std::future<service::ResolverResult> Query::resolveTestTaskState(service::ResolverParams&& params)
238+
{
239+
std::unique_lock resolverLock(_resolverMutex);
240+
auto directives = std::move(params.fieldDirectives);
241+
auto result = getTestTaskState(service::FieldParams(std::move(params), std::move(directives)));
242+
resolverLock.unlock();
243+
244+
return service::ModifiedResult<TaskState>::convert<service::TypeModifier::Nullable>(std::move(result), std::move(params));
245+
}
246+
231247
std::future<service::ResolverResult> Query::resolve_typename(service::ResolverParams&& params)
232248
{
233249
return service::ModifiedResult<response::StringType>::convert(response::StringType{ R"gql(Query)gql" }, std::move(params));
@@ -284,7 +300,8 @@ void AddQueryDetails(std::shared_ptr<schema::ObjectType> typeQuery, const std::s
284300
}),
285301
schema::Field::Make(R"gql(nested)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("NestedType"))),
286302
schema::Field::Make(R"gql(unimplemented)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("String"))),
287-
schema::Field::Make(R"gql(expensive)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("Expensive")))))
303+
schema::Field::Make(R"gql(expensive)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("Expensive"))))),
304+
schema::Field::Make(R"gql(testTaskState)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("TaskState"))
288305
});
289306
}
290307

samples/separate/QueryObject.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class Query
2929
virtual service::FieldResult<std::shared_ptr<NestedType>> getNested(service::FieldParams&& params) const;
3030
virtual service::FieldResult<response::StringType> getUnimplemented(service::FieldParams&& params) const;
3131
virtual service::FieldResult<std::vector<std::shared_ptr<Expensive>>> getExpensive(service::FieldParams&& params) const;
32+
virtual service::FieldResult<std::optional<TaskState>> getTestTaskState(service::FieldParams&& params) const;
3233

3334
private:
3435
std::future<service::ResolverResult> resolveNode(service::ResolverParams&& params);
@@ -41,6 +42,7 @@ class Query
4142
std::future<service::ResolverResult> resolveNested(service::ResolverParams&& params);
4243
std::future<service::ResolverResult> resolveUnimplemented(service::ResolverParams&& params);
4344
std::future<service::ResolverResult> resolveExpensive(service::ResolverParams&& params);
45+
std::future<service::ResolverResult> resolveTestTaskState(service::ResolverParams&& params);
4446

4547
std::future<service::ResolverResult> resolve_typename(service::ResolverParams&& params);
4648
std::future<service::ResolverResult> resolve_schema(service::ResolverParams&& params);

samples/separate_nointrospection/QueryObject.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ Query::Query()
3030
{ R"gql(__typename)gql"sv, [this](service::ResolverParams&& params) { return resolve_typename(std::move(params)); } },
3131
{ R"gql(appointments)gql"sv, [this](service::ResolverParams&& params) { return resolveAppointments(std::move(params)); } },
3232
{ R"gql(unreadCounts)gql"sv, [this](service::ResolverParams&& params) { return resolveUnreadCounts(std::move(params)); } },
33+
{ R"gql(testTaskState)gql"sv, [this](service::ResolverParams&& params) { return resolveTestTaskState(std::move(params)); } },
3334
{ R"gql(unimplemented)gql"sv, [this](service::ResolverParams&& params) { return resolveUnimplemented(std::move(params)); } },
3435
{ R"gql(appointmentsById)gql"sv, [this](service::ResolverParams&& params) { return resolveAppointmentsById(std::move(params)); } },
3536
{ R"gql(unreadCountsById)gql"sv, [this](service::ResolverParams&& params) { return resolveUnreadCountsById(std::move(params)); } }
@@ -225,6 +226,21 @@ std::future<service::ResolverResult> Query::resolveExpensive(service::ResolverPa
225226
return service::ModifiedResult<Expensive>::convert<service::TypeModifier::List>(std::move(result), std::move(params));
226227
}
227228

229+
service::FieldResult<std::optional<TaskState>> Query::getTestTaskState(service::FieldParams&&) const
230+
{
231+
throw std::runtime_error(R"ex(Query::getTestTaskState is not implemented)ex");
232+
}
233+
234+
std::future<service::ResolverResult> Query::resolveTestTaskState(service::ResolverParams&& params)
235+
{
236+
std::unique_lock resolverLock(_resolverMutex);
237+
auto directives = std::move(params.fieldDirectives);
238+
auto result = getTestTaskState(service::FieldParams(std::move(params), std::move(directives)));
239+
resolverLock.unlock();
240+
241+
return service::ModifiedResult<TaskState>::convert<service::TypeModifier::Nullable>(std::move(result), std::move(params));
242+
}
243+
228244
std::future<service::ResolverResult> Query::resolve_typename(service::ResolverParams&& params)
229245
{
230246
return service::ModifiedResult<response::StringType>::convert(response::StringType{ R"gql(Query)gql" }, std::move(params));
@@ -267,7 +283,8 @@ void AddQueryDetails(std::shared_ptr<schema::ObjectType> typeQuery, const std::s
267283
}),
268284
schema::Field::Make(R"gql(nested)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("NestedType"))),
269285
schema::Field::Make(R"gql(unimplemented)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("String"))),
270-
schema::Field::Make(R"gql(expensive)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("Expensive")))))
286+
schema::Field::Make(R"gql(expensive)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("Expensive"))))),
287+
schema::Field::Make(R"gql(testTaskState)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("TaskState"))
271288
});
272289
}
273290

samples/separate_nointrospection/QueryObject.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class Query
2929
virtual service::FieldResult<std::shared_ptr<NestedType>> getNested(service::FieldParams&& params) const;
3030
virtual service::FieldResult<response::StringType> getUnimplemented(service::FieldParams&& params) const;
3131
virtual service::FieldResult<std::vector<std::shared_ptr<Expensive>>> getExpensive(service::FieldParams&& params) const;
32+
virtual service::FieldResult<std::optional<TaskState>> getTestTaskState(service::FieldParams&& params) const;
3233

3334
private:
3435
std::future<service::ResolverResult> resolveNode(service::ResolverParams&& params);
@@ -41,6 +42,7 @@ class Query
4142
std::future<service::ResolverResult> resolveNested(service::ResolverParams&& params);
4243
std::future<service::ResolverResult> resolveUnimplemented(service::ResolverParams&& params);
4344
std::future<service::ResolverResult> resolveExpensive(service::ResolverParams&& params);
45+
std::future<service::ResolverResult> resolveTestTaskState(service::ResolverParams&& params);
4446

4547
std::future<service::ResolverResult> resolve_typename(service::ResolverParams&& params);
4648
};

samples/unified/TodaySchema.cpp

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ Query::Query()
153153
{ R"gql(__typename)gql"sv, [this](service::ResolverParams&& params) { return resolve_typename(std::move(params)); } },
154154
{ R"gql(appointments)gql"sv, [this](service::ResolverParams&& params) { return resolveAppointments(std::move(params)); } },
155155
{ R"gql(unreadCounts)gql"sv, [this](service::ResolverParams&& params) { return resolveUnreadCounts(std::move(params)); } },
156+
{ R"gql(testTaskState)gql"sv, [this](service::ResolverParams&& params) { return resolveTestTaskState(std::move(params)); } },
156157
{ R"gql(unimplemented)gql"sv, [this](service::ResolverParams&& params) { return resolveUnimplemented(std::move(params)); } },
157158
{ R"gql(appointmentsById)gql"sv, [this](service::ResolverParams&& params) { return resolveAppointmentsById(std::move(params)); } },
158159
{ R"gql(unreadCountsById)gql"sv, [this](service::ResolverParams&& params) { return resolveUnreadCountsById(std::move(params)); } }
@@ -349,6 +350,21 @@ std::future<service::ResolverResult> Query::resolveExpensive(service::ResolverPa
349350
return service::ModifiedResult<Expensive>::convert<service::TypeModifier::List>(std::move(result), std::move(params));
350351
}
351352

353+
service::FieldResult<std::optional<TaskState>> Query::getTestTaskState(service::FieldParams&&) const
354+
{
355+
throw std::runtime_error(R"ex(Query::getTestTaskState is not implemented)ex");
356+
}
357+
358+
std::future<service::ResolverResult> Query::resolveTestTaskState(service::ResolverParams&& params)
359+
{
360+
std::unique_lock resolverLock(_resolverMutex);
361+
auto directives = std::move(params.fieldDirectives);
362+
auto result = getTestTaskState(service::FieldParams(std::move(params), std::move(directives)));
363+
resolverLock.unlock();
364+
365+
return service::ModifiedResult<TaskState>::convert<service::TypeModifier::Nullable>(std::move(result), std::move(params));
366+
}
367+
352368
std::future<service::ResolverResult> Query::resolve_typename(service::ResolverParams&& params)
353369
{
354370
return service::ModifiedResult<response::StringType>::convert(response::StringType{ R"gql(Query)gql" }, std::move(params));
@@ -1269,7 +1285,8 @@ void AddTypesToSchema(const std::shared_ptr<schema::Schema>& schema)
12691285
}),
12701286
schema::Field::Make(R"gql(nested)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("NestedType"))),
12711287
schema::Field::Make(R"gql(unimplemented)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("String"))),
1272-
schema::Field::Make(R"gql(expensive)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("Expensive")))))
1288+
schema::Field::Make(R"gql(expensive)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("Expensive"))))),
1289+
schema::Field::Make(R"gql(testTaskState)gql"sv, R"md()md"sv, std::nullopt, schema->LookupType("TaskState"))
12731290
});
12741291
typePageInfo->AddFields({
12751292
schema::Field::Make(R"gql(hasNextPage)gql"sv, R"md()md"sv, std::nullopt, schema->WrapType(introspection::TypeKind::NON_NULL, schema->LookupType("Boolean"))),

samples/unified/TodaySchema.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ class Query
105105
virtual service::FieldResult<std::shared_ptr<NestedType>> getNested(service::FieldParams&& params) const;
106106
virtual service::FieldResult<response::StringType> getUnimplemented(service::FieldParams&& params) const;
107107
virtual service::FieldResult<std::vector<std::shared_ptr<Expensive>>> getExpensive(service::FieldParams&& params) const;
108+
virtual service::FieldResult<std::optional<TaskState>> getTestTaskState(service::FieldParams&& params) const;
108109

109110
private:
110111
std::future<service::ResolverResult> resolveNode(service::ResolverParams&& params);
@@ -117,6 +118,7 @@ class Query
117118
std::future<service::ResolverResult> resolveNested(service::ResolverParams&& params);
118119
std::future<service::ResolverResult> resolveUnimplemented(service::ResolverParams&& params);
119120
std::future<service::ResolverResult> resolveExpensive(service::ResolverParams&& params);
121+
std::future<service::ResolverResult> resolveTestTaskState(service::ResolverParams&& params);
120122

121123
std::future<service::ResolverResult> resolve_typename(service::ResolverParams&& params);
122124
std::future<service::ResolverResult> resolve_schema(service::ResolverParams&& params);

0 commit comments

Comments
 (0)