Я строю свой первый API-интерфейс GraphQL с использованием rails и гема graphql-ruby. Пока это было очень просто и просто потрясающе.
Я застрял сейчас в отношении дублирования кода. У меня есть приложение для управления проектами, в котором есть пробелы, задачи (они принадлежат пробелу), пользователи.
Чего я хочу добиться, так это уметь запрашивать пробелы и их задачи, а также, например, все задачи для текущего пользователя. Для задач я хочу иметь возможность фильтровать их, используя разные аргументы:
Готово - логическое значение,
Область - Строка (сегодня или неделя),
Assignee - Integer (Id пользователя)
query {
space(id: 5) {
todos(done: false) {
name
done
dueAt
}
}
}
query {
me {
todos(done: false, scope: today) {
name
done
dueAt
}
}
}
Это означает, что каждый раз, когда я получаю полевые задачи, я хочу иметь возможность фильтровать их независимо от того, выполнены ли они или должны быть выполнены сегодня и т. Д.
Я знаю, как использовать аргументы, и все работает отлично, но в настоящее время я получаю один и тот же кодер снова и снова. Как (и где) я могу извлечь этот код, чтобы его можно было повторно использовать каждый раз, когда у меня одно и то же поле задач?
field :todos, [TodoType], null: true do
argument :done, Boolean, required: false
argument :scope, String, required: false
argument :limit, Integer, required: false
end