Поиск Github GraphQL с фильтрацией

Основываясь на моем ограниченном поиске, кажется, что GraphQL может поддерживать только равную фильтрацию. Так,

Можно ли выполнить поиск Github GraphQL с условиями фильтрации,

  • звезды> 10
  • вилы> 3
  • общая фиксация> = 5
  • всего выпусков> = 1
  • открытые вопросы <= 60
  • размер> 2k
  • оценка> 5
  • последнее обновление в течение года

То есть фильтрация будет все выше условий. Является ли это возможным?

Этот вопрос / ответ помог мне найти лучший подход к поиску Github, к вашему сведению.

xpt 31.03.2018 22:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
1
4 306
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Это не ответ, а обновление того, что я собрал до сих пор.

  • Согласно «Выберите * для поиска Github GraphQL», не все вышеперечисленные критерии могут быть доступны на границе репозитория. А именно, «общая фиксация», «открытые проблемы» и «оценка» могут быть недоступны.

  • Очевидно, что цель вопроса - найти ценные репозитории и отсеять некачественные. У меня есть все доступные поля собраны, которые могут быть полезны для такой оценки здесь.

Копия от 18.03.2018:

query SearchMostTop10Star($queryString: String!, $number_of_repos:Int!) {
  search(query: $queryString, type: REPOSITORY, first: $number_of_repos) {
    repositoryCount
    edges {
      node {
        ... on Repository {
          name
          url
          description
#         shortDescriptionHTML
          repositoryTopics(first: 12) {nodes {topic {name}}}
          primaryLanguage {name}
          languages(first: 3) { nodes {name} }
          releases {totalCount}
          forkCount
          pullRequests {totalCount}
          stargazers {totalCount}
          issues {totalCount}
          createdAt
          pushedAt
          updatedAt
        }
      }
    }
  }
}
variables {
  "queryString": "language:JavaScript stars:>10000", 
  "number_of_repos": 3 
}

Кто угодно может попробовать согласно здесь.

fwiw, есть фильтр, который вы можете применить к полю проблем, чтобы получить только открытые проблемы: issues(states:[OPEN])

Daniel Rearden 19.03.2018 03:12

спасибо @DanielRearden, у меня обновил мою суть

xpt 19.03.2018 03:56
Ответ принят как подходящий

При запросе репозиториев вы можете применить фильтр только к определенному количеству полей в вашем списке:

  • количество звезд
  • количество вилок
  • размер
  • последнее обновление

Хотя вы не можете указать их в фильтре запроса, вы можете включить другие поля в свой запрос и проверить значения в клиентском приложении:

  • общее количество выпусков
  • количество открытых вопросов

Хотя теоретически вы также можете запросить количество коммитов, применяя свои конкретные аргументы параметра, этот запрос возвращает ошибку сервера, но, скорее всего, время ожидания истекает. По этой причине эти строки закомментированы.

Вот запрос GraphQL:

query {
  search(
    type:REPOSITORY, 
    query: """
      stars:>10
      forks:>3
      size:>2000
      pushed:>=2018-08-08
    """,
    last: 100
  ) {
    repos: edges {
      repo: node {
        ... on Repository {
          url

          allIssues: issues {
            totalCount
          }
          openIssues: issues(states:OPEN) {
            totalCount
          }

          # commitsCount: object(expression: "master") {
          #   ... on Commit {
          #      history {
          #       totalCount
          #     }
          #   }
          # }
        }
      }
    }
  }
}

Спецификацию запросов к репозиторию можно найти здесь: https://help.github.com/en/articles/searching-for-repositories#search-by-repository-size

Потрясающий! Спасибо!!

xpt 09.08.2019 03:13

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