Ruby `graphql-client` Gem, как добавить динамически построенные запросы?

Используя собственный 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

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

0 ответов

Другие вопросы по тегам