Skip to content

Commit b1ff555

Browse files
author
Rafał Hibner
committed
Regulat list case
1 parent 4d6163d commit b1ff555

File tree

3 files changed

+42
-2
lines changed

3 files changed

+42
-2
lines changed

samples/client/query/QueryClient.cpp

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ const std::string& GetRequestText() noexcept
3030
appointments {
3131
edges {
3232
node {
33+
array
3334
id
3435
subject
3536
when
@@ -148,6 +149,11 @@ graphql::query::client::query::Query::Response::appointments_AppointmentConnecti
148149

149150
for (auto& member : members)
150151
{
152+
if (member.first == R"js(array)js"sv)
153+
{
154+
result.array = ModifiedResponse<response::IdType>::parse<TypeModifier::List>(std::move(member.second));
155+
continue;
156+
}
151157
if (member.first == R"js(id)js"sv)
152158
{
153159
result.id = ModifiedResponse<response::IdType>::parse(std::move(member.second));
@@ -458,6 +464,9 @@ struct ResponseVisitor::impl
458464
Member_appointments_edges_0,
459465
Member_appointments_edges_0_,
460466
Member_appointments_edges_0_node,
467+
Member_appointments_edges_0_node_array,
468+
Member_appointments_edges_0_node_array_0,
469+
Member_appointments_edges_0_node_array_0_,
461470
Member_appointments_edges_0_node_id,
462471
Member_appointments_edges_0_node_subject,
463472
Member_appointments_edges_0_node_when,
@@ -529,6 +538,10 @@ void ResponseVisitor::add_value([[maybe_unused]] std::shared_ptr<const response:
529538
_pimpl->response.appointments.edges->back()->node = ModifiedResponse<Response::appointments_AppointmentConnection::edges_AppointmentEdge::node_Appointment>::parse<TypeModifier::Nullable>(response::Value { *value });
530539
break;
531540

541+
case impl::VisitorState::Member_appointments_edges_0_node_array_0:
542+
_pimpl->response.appointments.edges->back()->node->array.push_back(ModifiedResponse<response::IdType>::parse(response::Value { *value }));
543+
break;
544+
532545
case impl::VisitorState::Member_appointments_edges_0_node_id:
533546
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
534547
_pimpl->response.appointments.edges->back()->node->id = ModifiedResponse<response::IdType>::parse(response::Value { *value });
@@ -687,6 +700,10 @@ void ResponseVisitor::reserve([[maybe_unused]] std::size_t count)
687700
_pimpl->response.appointments.edges->reserve(count);
688701
break;
689702

703+
case impl::VisitorState::Member_appointments_edges_0_node_array_0:
704+
_pimpl->response.appointments.edges->back()->->back()->node->->array.reserve(count);
705+
break;
706+
690707
case impl::VisitorState::Member_tasks_edges_0:
691708
_pimpl->response.tasks.edges->reserve(count);
692709
break;
@@ -720,6 +737,11 @@ void ResponseVisitor::start_object()
720737
_pimpl->response.appointments.edges->back()->node = std::make_optional<Response::appointments_AppointmentConnection::edges_AppointmentEdge::node_Appointment>({});
721738
break;
722739

740+
case impl::VisitorState::Member_appointments_edges_0_node_array_0:
741+
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node_array_0_;
742+
_pimpl->response.appointments.edges->back()->node->array.push_back({});
743+
break;
744+
723745
case impl::VisitorState::Member_tasks_edges_0:
724746
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_;
725747
_pimpl->response.tasks.edges->push_back(std::make_optional<Response::tasks_TaskConnection::edges_TaskEdge>({}));
@@ -797,7 +819,11 @@ void ResponseVisitor::add_member([[maybe_unused]] std::string&& key)
797819
break;
798820

799821
case impl::VisitorState::Member_appointments_edges_0_node:
800-
if (key == "id"sv)
822+
if (key == "array"sv)
823+
{
824+
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node_array;
825+
}
826+
else if (key == "id"sv)
801827
{
802828
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node_id;
803829
}
@@ -985,6 +1011,10 @@ void ResponseVisitor::start_array()
9851011
_pimpl->response.appointments.edges = std::make_optional<std::vector<std::optional<Response::appointments_AppointmentConnection::edges_AppointmentEdge>>>({});
9861012
break;
9871013

1014+
case impl::VisitorState::Member_appointments_edges_0_node_array:
1015+
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node_array_0;
1016+
break;
1017+
9881018
case impl::VisitorState::Member_tasks_edges:
9891019
_pimpl->state = impl::VisitorState::Member_tasks_edges_0;
9901020
_pimpl->response.tasks.edges = std::make_optional<std::vector<std::optional<Response::tasks_TaskConnection::edges_TaskEdge>>>({});
@@ -1015,6 +1045,10 @@ void ResponseVisitor::end_array()
10151045
_pimpl->state = impl::VisitorState::Member_appointments;
10161046
break;
10171047

1048+
case impl::VisitorState::Member_appointments_edges_0_node_array_0:
1049+
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
1050+
break;
1051+
10181052
case impl::VisitorState::Member_tasks_edges_0:
10191053
_pimpl->state = impl::VisitorState::Member_tasks;
10201054
break;
@@ -1206,6 +1240,10 @@ void ResponseVisitor::add_id([[maybe_unused]] response::IdType&& value)
12061240
{
12071241
switch (_pimpl->state)
12081242
{
1243+
case impl::VisitorState::Member_appointments_edges_0_node_array_0:
1244+
_pimpl->response.appointments.edges->back()->node->array.push_back(std::move(value));
1245+
break;
1246+
12091247
case impl::VisitorState::Member_appointments_edges_0_node_id:
12101248
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
12111249
_pimpl->response.appointments.edges->back()->node->id = std::move(value);

samples/client/query/QueryClient.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ namespace graphql::query {
3333
/// appointments {
3434
/// edges {
3535
/// node {
36+
/// array
3637
/// id
3738
/// subject
3839
/// when
@@ -126,6 +127,7 @@ struct [[nodiscard("unnecessary construction")]] Response
126127
{
127128
struct [[nodiscard("unnecessary construction")]] node_Appointment
128129
{
130+
std::vector<response::IdType> array {};
129131
response::IdType id {};
130132
std::optional<std::string> subject {};
131133
std::optional<response::Value> when {};

samples/client/query/query.today.graphql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ query {
55
appointments {
66
edges {
77
node {
8+
array
89
id
910
subject
1011
when
@@ -53,7 +54,6 @@ query {
5354
subject
5455
when
5556
isNow
56-
array
5757
}
5858
}
5959

0 commit comments

Comments
 (0)