// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// WARNING! Do not edit this file manually, your changes will be overwritten.
#include "QueryClient.h"
#include "graphqlservice/internal/SortedMap.h"
#include
#include
#include
#include
#include
#include
using namespace std::literals;
namespace graphql {
namespace query {
namespace client {
const std::string& GetRequestText() noexcept
{
static const auto s_request = R"gql(
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
query {
appointments {
edges {
node {
id
subject
when
isNow
__typename
}
}
}
tasks {
edges {
node {
id
title
isComplete
__typename
}
}
}
unreadCounts {
edges {
node {
id
name
unreadCount
__typename
}
}
}
# Read a field with an enum type
testTaskState
# Try a field with a union type
anyType(ids: ["ZmFrZVRhc2tJZA=="]) {
__typename
...on Node {
id
}
...on Task {
id
title
isComplete
}
...on Appointment {
id
subject
when
isNow
array
}
}
# Try a field with a C++ keyword
default
}
)gql"s;
return s_request;
}
const peg::ast& GetRequestObject() noexcept
{
static const auto s_request = []() noexcept {
auto ast = peg::parseString(GetRequestText());
// This has already been validated against the schema by clientgen.
ast.validated = true;
return ast;
}();
return s_request;
}
} // namespace client
} // namespace query
namespace client {
using namespace query;
static const std::array<:pair taskstate>, 4> s_valuesTaskState = {
std::make_pair(R"gql(New)gql"sv, TaskState::New),
std::make_pair(R"gql(Started)gql"sv, TaskState::Started),
std::make_pair(R"gql(Complete)gql"sv, TaskState::Complete),
std::make_pair(R"gql(Unassigned)gql"sv, TaskState::Unassigned)
};
template <>
TaskState Response::parse(response::Value&& value)
{
if (!value.maybe_enum())
{
throw std::logic_error { R"ex(not a valid TaskState value)ex" };
}
const auto result = internal::sorted_map_lookup<:shorter_or_less>(
s_valuesTaskState,
std::string_view { value.get<:string>() });
if (!result)
{
throw std::logic_error { R"ex(not a valid TaskState value)ex" };
}
return *result;
}
template <>
graphql::query::client::query::Query::Response::appointments_AppointmentConnection::edges_AppointmentEdge::node_Appointment Response<:query::client::query::query::response::appointments_appointmentconnection::edges_appointmen tedge::node_appointment>::parse(response::Value&& response)
{
graphql::query::client::query::Query::Response::appointments_AppointmentConnection::edges_AppointmentEdge::node_Appointment result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(id)js"sv)
{
result.id = ModifiedResponse<:idtype>::parse(std::move(member.second));
continue;
}
if (member.first == R"js(subject)js"sv)
{
result.subject = ModifiedResponse<:string>::parse<:nullable>(std::move(member.second));
continue;
}
if (member.first == R"js(when)js"sv)
{
result.when = ModifiedResponse<:value>::parse<:nullable>(std::move(member.second));
continue;
}
if (member.first == R"js(isNow)js"sv)
{
result.isNow = ModifiedResponse::parse(std::move(member.second));
continue;
}
if (member.first == R"js(__typename)js"sv)
{
result._typename = ModifiedResponse<:string>::parse(std::move(member.second));
continue;
}
}
}
return result;
}
template <>
graphql::query::client::query::Query::Response::appointments_AppointmentConnection::edges_AppointmentEdge Response<:query::client::query::query::response::appointments_appointmentconnection::edges_appointmen tedge>::parse(response::Value&& response)
{
graphql::query::client::query::Query::Response::appointments_AppointmentConnection::edges_AppointmentEdge result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(node)js"sv)
{
result.node = ModifiedResponse<:query::client::query::query::response::appointments_appointmentconnection::edges_appointmen tedge::node_appointment>::parse<:nullable>(std::move(member.second));
continue;
}
}
}
return result;
}
template <>
graphql::query::client::query::Query::Response::appointments_AppointmentConnection Response<:query::client::query::query::response::appointments_appointmentconnection>::parse(response::Value&& response)
{
graphql::query::client::query::Query::Response::appointments_AppointmentConnection result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(edges)js"sv)
{
result.edges = ModifiedResponse<:query::client::query::query::response::appointments_appointmentconnection::edges_appointmen tedge>::parse<:nullable typemodifier::list typemodifier::nullable>(std::move(member.second));
continue;
}
}
}
return result;
}
template <>
graphql::query::client::query::Query::Response::tasks_TaskConnection::edges_TaskEdge::node_Task Response<:query::client::query::query::response::tasks_taskconnection::edges_taskedge::node_task>::parse(response::Value&& response)
{
graphql::query::client::query::Query::Response::tasks_TaskConnection::edges_TaskEdge::node_Task result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(id)js"sv)
{
result.id = ModifiedResponse<:idtype>::parse(std::move(member.second));
continue;
}
if (member.first == R"js(title)js"sv)
{
result.title = ModifiedResponse<:string>::parse<:nullable>(std::move(member.second));
continue;
}
if (member.first == R"js(isComplete)js"sv)
{
result.isComplete = ModifiedResponse::parse(std::move(member.second));
continue;
}
if (member.first == R"js(__typename)js"sv)
{
result._typename = ModifiedResponse<:string>::parse(std::move(member.second));
continue;
}
}
}
return result;
}
template <>
graphql::query::client::query::Query::Response::tasks_TaskConnection::edges_TaskEdge Response<:query::client::query::query::response::tasks_taskconnection::edges_taskedge>::parse(response::Value&& response)
{
graphql::query::client::query::Query::Response::tasks_TaskConnection::edges_TaskEdge result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(node)js"sv)
{
result.node = ModifiedResponse<:query::client::query::query::response::tasks_taskconnection::edges_taskedge::node_task>::parse<:nullable>(std::move(member.second));
continue;
}
}
}
return result;
}
template <>
graphql::query::client::query::Query::Response::tasks_TaskConnection Response<:query::client::query::query::response::tasks_taskconnection>::parse(response::Value&& response)
{
graphql::query::client::query::Query::Response::tasks_TaskConnection result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(edges)js"sv)
{
result.edges = ModifiedResponse<:query::client::query::query::response::tasks_taskconnection::edges_taskedge>::parse<:nullable typemodifier::list typemodifier::nullable>(std::move(member.second));
continue;
}
}
}
return result;
}
template <>
graphql::query::client::query::Query::Response::unreadCounts_FolderConnection::edges_FolderEdge::node_Folder Response<:query::client::query::query::response::unreadcounts_folderconnection::edges_folderedge::nod e_folder>::parse(response::Value&& response)
{
graphql::query::client::query::Query::Response::unreadCounts_FolderConnection::edges_FolderEdge::node_Folder result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(id)js"sv)
{
result.id = ModifiedResponse<:idtype>::parse(std::move(member.second));
continue;
}
if (member.first == R"js(name)js"sv)
{
result.name = ModifiedResponse<:string>::parse<:nullable>(std::move(member.second));
continue;
}
if (member.first == R"js(unreadCount)js"sv)
{
result.unreadCount = ModifiedResponse::parse(std::move(member.second));
continue;
}
if (member.first == R"js(__typename)js"sv)
{
result._typename = ModifiedResponse<:string>::parse(std::move(member.second));
continue;
}
}
}
return result;
}
template <>
graphql::query::client::query::Query::Response::unreadCounts_FolderConnection::edges_FolderEdge Response<:query::client::query::query::response::unreadcounts_folderconnection::edges_folderedge>::parse(response::Value&& response)
{
graphql::query::client::query::Query::Response::unreadCounts_FolderConnection::edges_FolderEdge result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(node)js"sv)
{
result.node = ModifiedResponse<:query::client::query::query::response::unreadcounts_folderconnection::edges_folderedge::nod e_folder>::parse<:nullable>(std::move(member.second));
continue;
}
}
}
return result;
}
template <>
graphql::query::client::query::Query::Response::unreadCounts_FolderConnection Response<:query::client::query::query::response::unreadcounts_folderconnection>::parse(response::Value&& response)
{
graphql::query::client::query::Query::Response::unreadCounts_FolderConnection result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(edges)js"sv)
{
result.edges = ModifiedResponse<:query::client::query::query::response::unreadcounts_folderconnection::edges_folderedge>::parse<:nullable typemodifier::list typemodifier::nullable>(std::move(member.second));
continue;
}
}
}
return result;
}
template <>
graphql::query::client::query::Query::Response::anyType_UnionType Response<:query::client::query::query::response::anytype_uniontype>::parse(response::Value&& response)
{
graphql::query::client::query::Query::Response::anyType_UnionType result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(__typename)js"sv)
{
result._typename = ModifiedResponse<:string>::parse(std::move(member.second));
continue;
}
if (member.first == R"js(id)js"sv)
{
result.id = ModifiedResponse<:idtype>::parse(std::move(member.second));
continue;
}
if (member.first == R"js(title)js"sv)
{
result.title = ModifiedResponse<:string>::parse<:nullable>(std::move(member.second));
continue;
}
if (member.first == R"js(isComplete)js"sv)
{
result.isComplete = ModifiedResponse::parse(std::move(member.second));
continue;
}
if (member.first == R"js(subject)js"sv)
{
result.subject = ModifiedResponse<:string>::parse<:nullable>(std::move(member.second));
continue;
}
if (member.first == R"js(when)js"sv)
{
result.when = ModifiedResponse<:value>::parse<:nullable>(std::move(member.second));
continue;
}
if (member.first == R"js(isNow)js"sv)
{
result.isNow = ModifiedResponse::parse(std::move(member.second));
continue;
}
if (member.first == R"js(array)js"sv)
{
result.array = ModifiedResponse<:idtype>::parse<:list>(std::move(member.second));
continue;
}
}
}
return result;
}
} // namespace client
namespace query::client::query::Query {
const std::string& GetOperationName() noexcept
{
static const auto s_name = R"gql()gql"s;
return s_name;
}
struct ResponseVisitor::impl
{
enum class VisitorState
{
Start,
Member_appointments,
Member_appointments_edges,
Member_appointments_edges_0,
Member_appointments_edges_0_,
Member_appointments_edges_0_node,
Member_appointments_edges_0_node_id,
Member_appointments_edges_0_node_subject,
Member_appointments_edges_0_node_when,
Member_appointments_edges_0_node_isNow,
Member_appointments_edges_0_node__typename,
Member_tasks,
Member_tasks_edges,
Member_tasks_edges_0,
Member_tasks_edges_0_,
Member_tasks_edges_0_node,
Member_tasks_edges_0_node_id,
Member_tasks_edges_0_node_title,
Member_tasks_edges_0_node_isComplete,
Member_tasks_edges_0_node__typename,
Member_unreadCounts,
Member_unreadCounts_edges,
Member_unreadCounts_edges_0,
Member_unreadCounts_edges_0_,
Member_unreadCounts_edges_0_node,
Member_unreadCounts_edges_0_node_id,
Member_unreadCounts_edges_0_node_name,
Member_unreadCounts_edges_0_node_unreadCount,
Member_unreadCounts_edges_0_node__typename,
Member_testTaskState,
Member_anyType,
Member_anyType_0,
Member_anyType_0_,
Member_anyType_0__typename,
Member_anyType_0_id,
Member_anyType_0_title,
Member_anyType_0_isComplete,
Member_anyType_0_subject,
Member_anyType_0_when,
Member_anyType_0_isNow,
Member_anyType_0_array,
Member_anyType_0_array_0,
Member_anyType_0_array_0_,
Member_default_,
Complete,
};
VisitorState state { VisitorState::Start };
Response response {};
};
ResponseVisitor::ResponseVisitor() noexcept
: _pimpl { std::make_unique() }
{
}
ResponseVisitor::~ResponseVisitor()
{
}
void ResponseVisitor::add_value([[maybe_unused]] std::shared_ptr&& value)
{
using namespace graphql::client;
switch (_pimpl->state)
{
case impl::VisitorState::Member_appointments:
_pimpl->state = impl::VisitorState::Start;
_pimpl->response.appointments = ModifiedResponse<:appointments_appointmentconnection>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_appointments_edges_0:
_pimpl->response.appointments.edges->push_back(ModifiedResponse<:appointments_appointmentconnection::edges_appointmentedge>::parse<:nullable>(response::Value { *value }));
break;
case impl::VisitorState::Member_appointments_edges_0_node:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_;
_pimpl->response.appointments.edges->back()->node = ModifiedResponse<:appointments_appointmentconnection::edges_appointmentedge::node_appointment>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Member_appointments_edges_0_node_id:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->id = ModifiedResponse<:idtype>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_appointments_edges_0_node_subject:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->subject = ModifiedResponse<:string>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Member_appointments_edges_0_node_when:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->when = ModifiedResponse<:value>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Member_appointments_edges_0_node_isNow:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->isNow = ModifiedResponse::parse(response::Value { *value });
break;
case impl::VisitorState::Member_appointments_edges_0_node__typename:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->_typename = ModifiedResponse<:string>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_tasks:
_pimpl->state = impl::VisitorState::Start;
_pimpl->response.tasks = ModifiedResponse<:tasks_taskconnection>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_tasks_edges_0:
_pimpl->response.tasks.edges->push_back(ModifiedResponse<:tasks_taskconnection::edges_taskedge>::parse<:nullable>(response::Value { *value }));
break;
case impl::VisitorState::Member_tasks_edges_0_node:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_;
_pimpl->response.tasks.edges->back()->node = ModifiedResponse<:tasks_taskconnection::edges_taskedge::node_task>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Member_tasks_edges_0_node_id:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node;
_pimpl->response.tasks.edges->back()->node->id = ModifiedResponse<:idtype>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_tasks_edges_0_node_title:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node;
_pimpl->response.tasks.edges->back()->node->title = ModifiedResponse<:string>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Member_tasks_edges_0_node_isComplete:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node;
_pimpl->response.tasks.edges->back()->node->isComplete = ModifiedResponse::parse(response::Value { *value });
break;
case impl::VisitorState::Member_tasks_edges_0_node__typename:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node;
_pimpl->response.tasks.edges->back()->node->_typename = ModifiedResponse<:string>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_unreadCounts:
_pimpl->state = impl::VisitorState::Start;
_pimpl->response.unreadCounts = ModifiedResponse<:unreadcounts_folderconnection>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_unreadCounts_edges_0:
_pimpl->response.unreadCounts.edges->push_back(ModifiedResponse<:unreadcounts_folderconnection::edges_folderedge>::parse<:nullable>(response::Value { *value }));
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_;
_pimpl->response.unreadCounts.edges->back()->node = ModifiedResponse<:unreadcounts_folderconnection::edges_folderedge::node_folder>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node_id:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node;
_pimpl->response.unreadCounts.edges->back()->node->id = ModifiedResponse<:idtype>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node_name:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node;
_pimpl->response.unreadCounts.edges->back()->node->name = ModifiedResponse<:string>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node_unreadCount:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node;
_pimpl->response.unreadCounts.edges->back()->node->unreadCount = ModifiedResponse::parse(response::Value { *value });
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node__typename:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node;
_pimpl->response.unreadCounts.edges->back()->node->_typename = ModifiedResponse<:string>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_testTaskState:
_pimpl->state = impl::VisitorState::Start;
_pimpl->response.testTaskState = ModifiedResponse::parse(response::Value { *value });
break;
case impl::VisitorState::Member_anyType_0:
_pimpl->response.anyType.push_back(ModifiedResponse<:anytype_uniontype>::parse<:nullable>(response::Value { *value }));
break;
case impl::VisitorState::Member_anyType_0__typename:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->_typename = ModifiedResponse<:string>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_anyType_0_id:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->id = ModifiedResponse<:idtype>::parse(response::Value { *value });
break;
case impl::VisitorState::Member_anyType_0_title:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->title = ModifiedResponse<:string>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Member_anyType_0_isComplete:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->isComplete = ModifiedResponse::parse(response::Value { *value });
break;
case impl::VisitorState::Member_anyType_0_subject:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->subject = ModifiedResponse<:string>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Member_anyType_0_when:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->when = ModifiedResponse<:value>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Member_anyType_0_isNow:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->isNow = ModifiedResponse::parse(response::Value { *value });
break;
case impl::VisitorState::Member_anyType_0_array_0:
_pimpl->response.anyType.back()->array.push_back(ModifiedResponse<:idtype>::parse(response::Value { *value }));
break;
case impl::VisitorState::Member_default_:
_pimpl->state = impl::VisitorState::Start;
_pimpl->response.default_ = ModifiedResponse<:string>::parse<:nullable>(response::Value { *value });
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::reserve([[maybe_unused]] std::size_t count)
{
switch (_pimpl->state)
{
case impl::VisitorState::Member_appointments_edges_0:
_pimpl->response.appointments.edges->reserve(count);
break;
case impl::VisitorState::Member_tasks_edges_0:
_pimpl->response.tasks.edges->reserve(count);
break;
case impl::VisitorState::Member_unreadCounts_edges_0:
_pimpl->response.unreadCounts.edges->reserve(count);
break;
case impl::VisitorState::Member_anyType_0:
_pimpl->response.anyType.reserve(count);
break;
case impl::VisitorState::Member_anyType_0_array_0:
_pimpl->response.anyType.back()->array.reserve(count);
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::start_object()
{
switch (_pimpl->state)
{
case impl::VisitorState::Member_appointments_edges_0:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_;
_pimpl->response.appointments.edges->push_back(std::make_optional<:appointments_appointmentconnection::edges_appointmentedge>({}));
break;
case impl::VisitorState::Member_appointments_edges_0_node:
_pimpl->response.appointments.edges->back()->node = std::make_optional<:appointments_appointmentconnection::edges_appointmentedge::node_appointment>({});
break;
case impl::VisitorState::Member_tasks_edges_0:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_;
_pimpl->response.tasks.edges->push_back(std::make_optional<:tasks_taskconnection::edges_taskedge>({}));
break;
case impl::VisitorState::Member_tasks_edges_0_node:
_pimpl->response.tasks.edges->back()->node = std::make_optional<:tasks_taskconnection::edges_taskedge::node_task>({});
break;
case impl::VisitorState::Member_unreadCounts_edges_0:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_;
_pimpl->response.unreadCounts.edges->push_back(std::make_optional<:unreadcounts_folderconnection::edges_folderedge>({}));
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node:
_pimpl->response.unreadCounts.edges->back()->node = std::make_optional<:unreadcounts_folderconnection::edges_folderedge::node_folder>({});
break;
case impl::VisitorState::Member_anyType_0:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.push_back(std::make_optional<:anytype_uniontype>({}));
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::add_member([[maybe_unused]] std::string&& key)
{
switch (_pimpl->state)
{
case impl::VisitorState::Start:
if (key == "appointments"sv)
{
_pimpl->state = impl::VisitorState::Member_appointments;
}
else if (key == "tasks"sv)
{
_pimpl->state = impl::VisitorState::Member_tasks;
}
else if (key == "unreadCounts"sv)
{
_pimpl->state = impl::VisitorState::Member_unreadCounts;
}
else if (key == "testTaskState"sv)
{
_pimpl->state = impl::VisitorState::Member_testTaskState;
}
else if (key == "anyType"sv)
{
_pimpl->state = impl::VisitorState::Member_anyType;
}
else if (key == "default"sv)
{
_pimpl->state = impl::VisitorState::Member_default_;
}
break;
case impl::VisitorState::Member_appointments:
if (key == "edges"sv)
{
_pimpl->state = impl::VisitorState::Member_appointments_edges;
}
break;
case impl::VisitorState::Member_appointments_edges_0_:
if (key == "node"sv)
{
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
}
break;
case impl::VisitorState::Member_appointments_edges_0_node:
if (key == "id"sv)
{
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node_id;
}
else if (key == "subject"sv)
{
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node_subject;
}
else if (key == "when"sv)
{
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node_when;
}
else if (key == "isNow"sv)
{
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node_isNow;
}
else if (key == "__typename"sv)
{
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node__typename;
}
break;
case impl::VisitorState::Member_tasks:
if (key == "edges"sv)
{
_pimpl->state = impl::VisitorState::Member_tasks_edges;
}
break;
case impl::VisitorState::Member_tasks_edges_0_:
if (key == "node"sv)
{
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node;
}
break;
case impl::VisitorState::Member_tasks_edges_0_node:
if (key == "id"sv)
{
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node_id;
}
else if (key == "title"sv)
{
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node_title;
}
else if (key == "isComplete"sv)
{
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node_isComplete;
}
else if (key == "__typename"sv)
{
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node__typename;
}
break;
case impl::VisitorState::Member_unreadCounts:
if (key == "edges"sv)
{
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges;
}
break;
case impl::VisitorState::Member_unreadCounts_edges_0_:
if (key == "node"sv)
{
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node;
}
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node:
if (key == "id"sv)
{
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node_id;
}
else if (key == "name"sv)
{
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node_name;
}
else if (key == "unreadCount"sv)
{
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node_unreadCount;
}
else if (key == "__typename"sv)
{
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node__typename;
}
break;
case impl::VisitorState::Member_anyType_0_:
if (key == "__typename"sv)
{
_pimpl->state = impl::VisitorState::Member_anyType_0__typename;
}
else if (key == "id"sv)
{
_pimpl->state = impl::VisitorState::Member_anyType_0_id;
}
else if (key == "title"sv)
{
_pimpl->state = impl::VisitorState::Member_anyType_0_title;
}
else if (key == "isComplete"sv)
{
_pimpl->state = impl::VisitorState::Member_anyType_0_isComplete;
}
else if (key == "subject"sv)
{
_pimpl->state = impl::VisitorState::Member_anyType_0_subject;
}
else if (key == "when"sv)
{
_pimpl->state = impl::VisitorState::Member_anyType_0_when;
}
else if (key == "isNow"sv)
{
_pimpl->state = impl::VisitorState::Member_anyType_0_isNow;
}
else if (key == "array"sv)
{
_pimpl->state = impl::VisitorState::Member_anyType_0_array;
}
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::end_object()
{
switch (_pimpl->state)
{
case impl::VisitorState::Member_appointments_edges_0_node:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_;
break;
case impl::VisitorState::Member_appointments_edges_0_:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0;
break;
case impl::VisitorState::Member_appointments:
_pimpl->state = impl::VisitorState::Start;
break;
case impl::VisitorState::Member_tasks_edges_0_node:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_;
break;
case impl::VisitorState::Member_tasks_edges_0_:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0;
break;
case impl::VisitorState::Member_tasks:
_pimpl->state = impl::VisitorState::Start;
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_;
break;
case impl::VisitorState::Member_unreadCounts_edges_0_:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0;
break;
case impl::VisitorState::Member_unreadCounts:
_pimpl->state = impl::VisitorState::Start;
break;
case impl::VisitorState::Member_anyType_0_:
_pimpl->state = impl::VisitorState::Member_anyType_0;
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::start_array()
{
switch (_pimpl->state)
{
case impl::VisitorState::Member_appointments_edges:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0;
_pimpl->response.appointments.edges = std::make_optional<:vector>>>({});
break;
case impl::VisitorState::Member_tasks_edges:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0;
_pimpl->response.tasks.edges = std::make_optional<:vector>>>({});
break;
case impl::VisitorState::Member_unreadCounts_edges:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0;
_pimpl->response.unreadCounts.edges = std::make_optional<:vector>>>({});
break;
case impl::VisitorState::Member_anyType:
_pimpl->state = impl::VisitorState::Member_anyType_0;
break;
case impl::VisitorState::Member_anyType_0_array:
_pimpl->state = impl::VisitorState::Member_anyType_0_array_0;
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::end_array()
{
switch (_pimpl->state)
{
case impl::VisitorState::Member_appointments_edges_0:
_pimpl->state = impl::VisitorState::Member_appointments;
break;
case impl::VisitorState::Member_tasks_edges_0:
_pimpl->state = impl::VisitorState::Member_tasks;
break;
case impl::VisitorState::Member_unreadCounts_edges_0:
_pimpl->state = impl::VisitorState::Member_unreadCounts;
break;
case impl::VisitorState::Member_anyType_0:
_pimpl->state = impl::VisitorState::Start;
break;
case impl::VisitorState::Member_anyType_0_array_0:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::add_null()
{
switch (_pimpl->state)
{
case impl::VisitorState::Member_appointments_edges_0:
_pimpl->response.appointments.edges->push_back(std::nullopt);
break;
case impl::VisitorState::Member_appointments_edges_0_node:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_;
_pimpl->response.appointments.edges->back()->node = std::nullopt;
break;
case impl::VisitorState::Member_appointments_edges_0_node_subject:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->subject = std::nullopt;
break;
case impl::VisitorState::Member_appointments_edges_0_node_when:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->when = std::nullopt;
break;
case impl::VisitorState::Member_tasks_edges_0:
_pimpl->response.tasks.edges->push_back(std::nullopt);
break;
case impl::VisitorState::Member_tasks_edges_0_node:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_;
_pimpl->response.tasks.edges->back()->node = std::nullopt;
break;
case impl::VisitorState::Member_tasks_edges_0_node_title:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node;
_pimpl->response.tasks.edges->back()->node->title = std::nullopt;
break;
case impl::VisitorState::Member_unreadCounts_edges_0:
_pimpl->response.unreadCounts.edges->push_back(std::nullopt);
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_;
_pimpl->response.unreadCounts.edges->back()->node = std::nullopt;
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node_name:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node;
_pimpl->response.unreadCounts.edges->back()->node->name = std::nullopt;
break;
case impl::VisitorState::Member_anyType_0:
_pimpl->response.anyType.push_back(std::nullopt);
break;
case impl::VisitorState::Member_anyType_0_title:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->title = std::nullopt;
break;
case impl::VisitorState::Member_anyType_0_subject:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->subject = std::nullopt;
break;
case impl::VisitorState::Member_anyType_0_when:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->when = std::nullopt;
break;
case impl::VisitorState::Member_default_:
_pimpl->state = impl::VisitorState::Start;
_pimpl->response.default_ = std::nullopt;
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::add_string([[maybe_unused]] std::string&& value)
{
switch (_pimpl->state)
{
case impl::VisitorState::Member_appointments_edges_0_node_subject:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->subject = std::move(value);
break;
case impl::VisitorState::Member_appointments_edges_0_node__typename:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->_typename = std::move(value);
break;
case impl::VisitorState::Member_tasks_edges_0_node_title:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node;
_pimpl->response.tasks.edges->back()->node->title = std::move(value);
break;
case impl::VisitorState::Member_tasks_edges_0_node__typename:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node;
_pimpl->response.tasks.edges->back()->node->_typename = std::move(value);
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node_name:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node;
_pimpl->response.unreadCounts.edges->back()->node->name = std::move(value);
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node__typename:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node;
_pimpl->response.unreadCounts.edges->back()->node->_typename = std::move(value);
break;
case impl::VisitorState::Member_anyType_0__typename:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->_typename = std::move(value);
break;
case impl::VisitorState::Member_anyType_0_title:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->title = std::move(value);
break;
case impl::VisitorState::Member_anyType_0_subject:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->subject = std::move(value);
break;
case impl::VisitorState::Member_default_:
_pimpl->state = impl::VisitorState::Start;
_pimpl->response.default_ = std::move(value);
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::add_enum([[maybe_unused]] std::string&& value)
{
using namespace graphql::client;
switch (_pimpl->state)
{
case impl::VisitorState::Member_testTaskState:
_pimpl->state = impl::VisitorState::Start;
if (const auto enumValue = internal::sorted_map_lookup<:shorter_or_less>(s_valuesTaskState, std::string_view { value }))
{
_pimpl->response.testTaskState = *enumValue;
}
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::add_id([[maybe_unused]] response::IdType&& value)
{
switch (_pimpl->state)
{
case impl::VisitorState::Member_appointments_edges_0_node_id:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->id = std::move(value);
break;
case impl::VisitorState::Member_tasks_edges_0_node_id:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node;
_pimpl->response.tasks.edges->back()->node->id = std::move(value);
break;
case impl::VisitorState::Member_unreadCounts_edges_0_node_id:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node;
_pimpl->response.unreadCounts.edges->back()->node->id = std::move(value);
break;
case impl::VisitorState::Member_anyType_0_id:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->id = std::move(value);
break;
case impl::VisitorState::Member_anyType_0_array_0:
_pimpl->response.anyType.back()->array.push_back(std::move(value));
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::add_bool([[maybe_unused]] bool value)
{
switch (_pimpl->state)
{
case impl::VisitorState::Member_appointments_edges_0_node_isNow:
_pimpl->state = impl::VisitorState::Member_appointments_edges_0_node;
_pimpl->response.appointments.edges->back()->node->isNow = value;
break;
case impl::VisitorState::Member_tasks_edges_0_node_isComplete:
_pimpl->state = impl::VisitorState::Member_tasks_edges_0_node;
_pimpl->response.tasks.edges->back()->node->isComplete = value;
break;
case impl::VisitorState::Member_anyType_0_isComplete:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->isComplete = value;
break;
case impl::VisitorState::Member_anyType_0_isNow:
_pimpl->state = impl::VisitorState::Member_anyType_0_;
_pimpl->response.anyType.back()->isNow = value;
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::add_int([[maybe_unused]] int value)
{
switch (_pimpl->state)
{
case impl::VisitorState::Member_unreadCounts_edges_0_node_unreadCount:
_pimpl->state = impl::VisitorState::Member_unreadCounts_edges_0_node;
_pimpl->response.unreadCounts.edges->back()->node->unreadCount = value;
break;
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::add_float([[maybe_unused]] double value)
{
switch (_pimpl->state)
{
case impl::VisitorState::Complete:
break;
default:
break;
}
}
void ResponseVisitor::complete()
{
_pimpl->state = impl::VisitorState::Complete;
}
Response ResponseVisitor::response()
{
Response response {};
switch (_pimpl->state)
{
case impl::VisitorState::Complete:
_pimpl->state = impl::VisitorState::Start;
std::swap(_pimpl->response, response);
break;
default:
break;
}
return response;
}
Response parseResponse(response::Value&& response)
{
using namespace graphql::client;
Response result;
if (response.type() == response::Type::Map)
{
auto members = response.release<:maptype>();
for (auto& member : members)
{
if (member.first == R"js(appointments)js"sv)
{
result.appointments = ModifiedResponse<:query::response::appointments_appointmentconnection>::parse(std::move(member.second));
continue;
}
if (member.first == R"js(tasks)js"sv)
{
result.tasks = ModifiedResponse<:query::response::tasks_taskconnection>::parse(std::move(member.second));
continue;
}
if (member.first == R"js(unreadCounts)js"sv)
{
result.unreadCounts = ModifiedResponse<:query::response::unreadcounts_folderconnection>::parse(std::move(member.second));
continue;
}
if (member.first == R"js(testTaskState)js"sv)
{
result.testTaskState = ModifiedResponse::parse(std::move(member.second));
continue;
}
if (member.first == R"js(anyType)js"sv)
{
result.anyType = ModifiedResponse<:query::response::anytype_uniontype>::parse<:list typemodifier::nullable>(std::move(member.second));
continue;
}
if (member.first == R"js(default)js"sv)
{
result.default_ = ModifiedResponse<:string>::parse<:nullable>(std::move(member.second));
continue;
}
}
}
return result;
}
[[nodiscard("unnecessary call")]] const std::string& Traits::GetRequestText() noexcept
{
return client::GetRequestText();
}
[[nodiscard("unnecessary call")]] const peg::ast& Traits::GetRequestObject() noexcept
{
return client::GetRequestObject();
}
[[nodiscard("unnecessary call")]] const std::string& Traits::GetOperationName() noexcept
{
return Query::GetOperationName();
}
[[nodiscard("unnecessary conversion")]] Traits::Response Traits::parseResponse(response::Value&& response)
{
return Query::parseResponse(std::move(response));
}
} // namespace query::client::query::Query
} // namespace graphql