// Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT License. // WARNING! Do not edit this file manually, your changes will be overwritten. #pragma once #ifndef QUERYOBJECT_H #define QUERYOBJECT_H #include "StarWarsSchema.h" namespace graphql::learn::object { namespace methods::QueryHas { template concept getHeroWithParams = requires (TImpl impl, service::FieldParams params, std::optional episodeArg) { { service::AwaitableObject> { impl.getHero(std::move(params), std::move(episodeArg)) } }; }; template concept getHero = requires (TImpl impl, std::optional episodeArg) { { service::AwaitableObject> { impl.getHero(std::move(episodeArg)) } }; }; template concept getHumanWithParams = requires (TImpl impl, service::FieldParams params, response::IdType idArg) { { service::AwaitableObject> { impl.getHuman(std::move(params), std::move(idArg)) } }; }; template concept getHuman = requires (TImpl impl, response::IdType idArg) { { service::AwaitableObject> { impl.getHuman(std::move(idArg)) } }; }; template concept getDroidWithParams = requires (TImpl impl, service::FieldParams params, response::IdType idArg) { { service::AwaitableObject> { impl.getDroid(std::move(params), std::move(idArg)) } }; }; template concept getDroid = requires (TImpl impl, response::IdType idArg) { { service::AwaitableObject> { impl.getDroid(std::move(idArg)) } }; }; template concept beginSelectionSet = requires (TImpl impl, const service::SelectionSetParams params) { { impl.beginSelectionSet(params) }; }; template concept endSelectionSet = requires (TImpl impl, const service::SelectionSetParams params) { { impl.endSelectionSet(params) }; }; } // namespace methods::QueryHas class [[nodiscard("unnecessary construction")]] Query final : public service::Object { private: [[nodiscard("unnecessary call")]] service::AwaitableResolver resolveHero(service::ResolverParams&& params) const; [[nodiscard("unnecessary call")]] service::AwaitableResolver resolveHuman(service::ResolverParams&& params) const; [[nodiscard("unnecessary call")]] service::AwaitableResolver resolveDroid(service::ResolverParams&& params) const; [[nodiscard("unnecessary call")]] service::AwaitableResolver resolve_typename(service::ResolverParams&& params) const; [[nodiscard("unnecessary call")]] service::AwaitableResolver resolve_schema(service::ResolverParams&& params) const; [[nodiscard("unnecessary call")]] service::AwaitableResolver resolve_type(service::ResolverParams&& params) const; std::shared_ptr _schema; struct [[nodiscard("unnecessary construction")]] Concept { virtual ~Concept() = default; virtual void beginSelectionSet(const service::SelectionSetParams& params) const = 0; virtual void endSelectionSet(const service::SelectionSetParams& params) const = 0; [[nodiscard("unnecessary call")]] virtual service::AwaitableObject> getHero(service::FieldParams&& params, std::optional&& episodeArg) const = 0; [[nodiscard("unnecessary call")]] virtual service::AwaitableObject> getHuman(service::FieldParams&& params, response::IdType&& idArg) const = 0; [[nodiscard("unnecessary call")]] virtual service::AwaitableObject> getDroid(service::FieldParams&& params, response::IdType&& idArg) const = 0; }; template struct [[nodiscard("unnecessary construction")]] Model final : Concept { explicit Model(std::shared_ptr pimpl) noexcept : _pimpl { std::move(pimpl) } { } [[nodiscard("unnecessary call")]] service::AwaitableObject> getHero(service::FieldParams&& params, std::optional&& episodeArg) const override { if constexpr (methods::QueryHas::getHeroWithParams) { return { _pimpl->getHero(std::move(params), std::move(episodeArg)) }; } else { static_assert(methods::QueryHas::getHero, R"msg(Query::getHero is not implemented)msg"); return { _pimpl->getHero(std::move(episodeArg)) }; } } [[nodiscard("unnecessary call")]] service::AwaitableObject> getHuman(service::FieldParams&& params, response::IdType&& idArg) const override { if constexpr (methods::QueryHas::getHumanWithParams) { return { _pimpl->getHuman(std::move(params), std::move(idArg)) }; } else { static_assert(methods::QueryHas::getHuman, R"msg(Query::getHuman is not implemented)msg"); return { _pimpl->getHuman(std::move(idArg)) }; } } [[nodiscard("unnecessary call")]] service::AwaitableObject> getDroid(service::FieldParams&& params, response::IdType&& idArg) const override { if constexpr (methods::QueryHas::getDroidWithParams) { return { _pimpl->getDroid(std::move(params), std::move(idArg)) }; } else { static_assert(methods::QueryHas::getDroid, R"msg(Query::getDroid is not implemented)msg"); return { _pimpl->getDroid(std::move(idArg)) }; } } void beginSelectionSet(const service::SelectionSetParams& params) const override { if constexpr (methods::QueryHas::beginSelectionSet) { _pimpl->beginSelectionSet(params); } } void endSelectionSet(const service::SelectionSetParams& params) const override { if constexpr (methods::QueryHas::endSelectionSet) { _pimpl->endSelectionSet(params); } } private: const std::shared_ptr _pimpl; }; explicit Query(std::unique_ptr pimpl) noexcept; [[nodiscard("unnecessary call")]] service::TypeNames getTypeNames() const noexcept; [[nodiscard("unnecessary call")]] service::ResolverMap getResolvers() const noexcept; void beginSelectionSet(const service::SelectionSetParams& params) const override; void endSelectionSet(const service::SelectionSetParams& params) const override; const std::unique_ptr _pimpl; public: template explicit Query(std::shared_ptr pimpl) noexcept : Query { std::unique_ptr { std::make_unique>(std::move(pimpl)) } } { } [[nodiscard("unnecessary call")]] static constexpr std::string_view getObjectType() noexcept { return { R"gql(Query)gql" }; } }; } // namespace graphql::learn::object #endif // QUERYOBJECT_H