See More

// 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