У меня есть Ruby+GraphQL
проект, построенный из микро-сервисов и внешнего интерфейса, который использует ember-apollo
.Я все еще изучаю все эти технологии и довольно плохо знаком с концепцией микро-сервисов.
У меня есть три модуля в моем API - Clients
, Collaborators
и main
(которые можно увидетькак зонтик других), за исключением main
, со своим собственным каталогом graphql
, который содержит их соответствующие QueryType
вместе с типами / определителями и schema
, который находится вне этих модулей.
Поскольку schema
может иметь только один query
тип, я подумал о том, чтобы как-то агрегировать поля в моем другом QueryTypes
таким образом, как этот с FieldCombiner
в модуле main
, своего рода в качестве точки входа, и используйте его в моей схеме.
Проблема с этим решением состоит в том, что он использует старый .define
стиль, который будет удален в graphql 2.0
, поэтому я считаю, что api * на базе класса - лучшее решение.Я довольно долго искал и не сталкивался с чем-то, что работает в этом направлении.
Что я хотел бы сделать в коде:
module OpenCompanyApi
class Schema < GraphQL::Schema
query Clients::Graphql::Types::Query
query Collaborators::Graphql::Types::Query # Something like that. They're two different modules, each with their own root query type
mutation Clients::Graphql::Types::Mutation
mutation Collaborators::Graphql::Types::Mutation # This too
end
end