#graphql
Вопрос:
Я пытаюсь создать структуру для распознавателей GraphQL, но немного застрял.
Представьте, что у нас есть разные организации типа продаж
type Sale { name: String value: Float type: Int }
В настоящее время у нас есть запрос, который получает все продажи по типу и сравнивает их для разных диапазонов дат
type SaleResult { name: String main_value: Float compare_value: Float difference: Float type: Int } input DateParamsInput { start: DateTime! end: DateTime! } input SomeFilterInput { dateRangeMain: DateParamsInput dateRangeCompare: DateParamsInput type: [Int] } Query { getSales(filter: SomeFilterInput) [SaleResult] }
и теперь нам было предложено добавить переключатель для захвата данных либо без сравнения, либо с ним. Мы можем добавить новый запрос, но я пытаюсь найти способ сделать один запрос для обоих случаев
Есть решение, как я его вижу
Query { getSales2(type: [Int]) { sale { name type diff(mainRange, compareRange) { main_value compare_value diff } value(mainRange) } } }
В этом случае у нас будет 2 вложенных решателя: diff
и value
. Первый может возвращать данные со значением сравнения, а другой-для одного значения
Другой способ
Query { getSales2(type: [Int], mainRange) { sale { name type value compare(compareRange) { value diff } } } }
но в этом случае мы должны иметь значение, прежде чем начнется распознаватель сравнения, и я не уверен, что это рабочий подход
Поскольку у меня нет никого, кто мог бы подтвердить это, я прошу вас о помощи. У тебя есть какие-нибудь мысли?
Комментарии:
1. Как насчет того, чтобы просто не заполнять
compare_value
иdifference
из существующегоSaleResult
типа, если вы не получили никакихdateRangeCompare
входных данных?2. Вы имеете в виду наличие двух атрибутов фильтра: mainRange и compareRange? Я думаю, что этот подход не поддается расширению, не так ли? Но это определенно сработает