Дублирующиеся типы объектов в Apollo GraphQL для Android - PullRequest
6 голосов
/ 29 мая 2019

В моем проекте GraphQL-схема объект AllowedPeriod (это всего два поля StartAt / EndAt) может попадать в разные объекты графа.

При генерации запросов apollo создает новый тип для каждого <parent_object>.AllowedPeriod

Например, в GetDevicesQuery, AllowedPeriod может быть внутри devices, actions или group, следовательно, генерируя следующие классы.

  • GetDevicesQuery.AllowedPeriod
  • GetDevicesQuery.AllowedPeriod1
  • GetDevicesQuery.AllowedPeriod2

Есть ли способ сообщить apollo, что это те же типы, и что он не должен генерироватьтипы для каждого из них?

1 Ответ

0 голосов
/ 15 июня 2019

Я думаю, что вы можете использовать фрагменты graphQL для решения вашей проблемы.Apollo должен генерировать один и тот же класс фрагмента для каждого из ваших запросов.

Например:

fragment AllowedPeriodFragment on AllowedPeriod {
    startsAt
    endsAt
}

query GetDevicesQuery() {
    devices {
        allowedPeriod { 
            ...AllowedPeriodFragment 
        }
    }

    actions {
        allowedPeriod { 
            ...AllowedPeriodFragment 
        }
    }
}

Получить доступ к созданному фрагменту можно с помощью метода fragments ().

Это должно выглядеть примерно так: device.fragments().allowedPeriodFragment() или action.fragments().allowedPeriodFragment()

...