Поддерживает ли API GraphQL GitHub фильтрацию файлов/деревьев по таким базовым вещам, как имя?

Я использую API GraphQL GitHub для получения каталогов и файлов в репозитории, но мне нужны только некоторые конкретные подмножества.

Репозиторий, с которым я работаю, имеет такую ​​структуру:

 - / #root
 - /.gitignore
 - /.github/...
 - /categoryOne
 - /categoryOne/itemOne
 - /categoryOne/itemOne/config.ini
 - /categoryTwo
 - /categoryTwo/itemOne
 - /categoryTwo/itemOne/config.ini
 - /categoryTwo/itemOne/maybe_some_junk/...
 ...

Я пытаюсь эффективно запросить узлы (category)->(item)->(config) и смог это сделать, но до сих пор не нашел способа опустить «мусорные» элементы (например, файл .gitignore и дерево .github).

Вот мой грубый, но рабочий запрос.

query Repository {
    repository(name: "my-repository", owner: "example") {
        object(expression: "HEAD:") {
            ... on Tree {
                categories: entries {
                    mode
                    name
                    type
                    object {
                        ... on Tree {
                            items: entries {
                                name
                                type
                                configFile: object {
                                    ... on Blob {
                                        text
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }   
    }
}

Это работает нормально, но включает в себя довольно много результатов, которые я хотел бы отфильтровать. Я пробовал добавлять предложения (where: {...}) в различные строки, и все они указывали, что это синтаксически неправильно.

Поддерживает ли API GraphQL Github фильтрацию некоторых объектов Blob/деревьев при запросе объектов репозитория? Если да, то какая операция/синтаксис необходима?


76
1

Ответ:

Решено

Узнав больше о GraphQL (должен был упомянуть, что я новичок в этом), я узнал, что операции и возможности очень специфичны для каждой реализации API - информация, которую я нашел, предполагает, что способность where: не применима. к API GitHub.

Дальнейшее рассмотрение схемы и документации GitHub GraphQL Теперь я уверен, что невозможно выполнить фильтрацию на стороне сервера. Мне понадобится мой клиентский код, чтобы понять, что результатом запроса является список «кандидатов», и его необходимо будет соответствующим образом отфильтровать.