от
Моя группа планирует использовать Apollo Gateway для федерации. Поэтому нам нужно создавать наши схемы немного по-другому. Можем ли мы создать что-то подобное с использованием вашей удивительной библиотеки?
extend type User @key(fields: "id") {
  id: ID! @external
  reviews: [Review]
}
             

Пожалуйста, войдите или зарегистрируйтесь для публикации ответа на этот вопрос.

1 Ответ

0 голосов
от
Вы хотите добавить некоторые поля и директивы для типа? Вы можете использовать
@GraphQLContext
для присоединения внешних методов в качестве полей. Или даже предоставить пользовательский
ResolverBuilder
, который возвращает дополнительные
Resolver
s (позже они отображаются в поля). Чтобы добавить директивы, вы можете создавать аннотации, мета-аннотированные с помощью
@GraphQLDirective
(см. Примеры в тестах). Наконец, вы, конечно, можете предоставить пользовательский
TypeMapper
для
User
и полностью взять на себя управление отображением этого типа. Например. Вы можете сделать аннотацию как:
@GraphQLDirective(locations = OBJECT)
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface Key {
    public String[] fields;
}
Если вы поместите эту аннотацию на тип:
@Key(fields = "id")
public class User {
    @External //another custom annotation
    public @GraphQLId @GraphQLNonNull String getId() {...}
}
это будет отображено как:
type User @key(fields: "id") {
    id: ID! @external
}
Я предполагаю, что вы знаете о
@GraphQLContext
, но вкратце:
//Some service class registered with GraphQLSchemaBuilder
@GraphQLApi
public class UserService {

    @GraphQLQuery
    public List
...