dry-rb_autoinject и GraphQL - PullRequest
       22

dry-rb_autoinject и GraphQL

0 голосов
/ 25 октября 2018

Я пытаюсь сделать GraphQL API, но также внедрить внедрение зависимостей через dry-rb_autoinject.Мне удалось сделать это через контроллер и контекст.Вот мой тест QueryType.

Types::QueryType = GraphQL::ObjectType.define do
  name "Query"
  # Add root-level fields here.
  # They will be entry points for queries on your schema.

  # TODO: remove me
  field :testField, types.String do
    description "An example field added by the generator"
    resolve ->(obj, args, ctx) {
     ctx[:services][:output_service].()
    }
  end
end

И в graphql_controller я просто делаю

class GraphqlController < ApplicationController
  include IMPORT[:output_service]
  def execute
   ...
      services: {
        output_service: output_service
      }
    ...

Но это решение кажется не очень хорошим, так как я импортирую все сервисы, за исключением тех, которые я надеваюне нужно для текущего поля.Есть ли какой-нибудь причудливый путь к этому, может быть, не через контекст?

1 Ответ

0 голосов
/ 25 октября 2018

Лучшее решение, по-видимому, состоит в том, чтобы написать функцию распознавателя для каждого корневого поля и внедрить туда, поскольку функция распознавателя является классом, наследующим от GraphQL :: Function

...