Ruby `graphql-client` Gem, как добавить динамически построенные запросы? - PullRequest
0 голосов
/ 01 октября 2019

Используя собственные Github graphql-client для Ruby, как можно создавать динамические запросы?

Например: Вот запрос, который находит язык репо.

module RepoLanguage
 Query = Gitwerk::Application::Client.parse <<-'GRAPHQL'
    query($owner: String!, $name: String!) {
      repository(owner: $owner, name: $name) {
        name
        primaryLanguage {
          name
        }
      }
    }
  GRAPHQL
end

Ноесли мне нужно найти три языка репозиториев, запрос будет выглядеть так:

{
  twbs: repository(owner: "twbs", name: "bootstrap-sass") {
    name
    primaryLanguage {
      name
    }
  }
  nookies: repository(owner: "maticzav", name: "nookies") {
    name
    primaryLanguage {
      name
    }
  }
}

Это единственный способ создать строку / запрос, подобный этому?

query = repos.map do |repo|
      <<-GRAPHQL
        #{repo[:$owner]}-#{repo[:$name]}: query {
          repository($owner: #{repo[:$owner]}, name: #{repo[:$name]}) {
            name
            primaryLanguage {
              name
            }
          }
        }
      GRAPHQL
    end.join('')
  end

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

...