我的小组计划将Apollo网关用于联盟。因此,我们需要稍微不同地产生模式。
我们可以使用惊人的lib来产生类似的东西吗?
extend type User @key(fields: "id") {
id: ID! @external
reviews: [Review]
}
答案 0 :(得分:0)
您要为类型添加一些字段和指令吗?
您可以使用 error: type mismatch;
found : org.apache.spark.sql.Column
required: Boolean
.where( (!(testerList.isEmpty)) && (($"agent_account_homepage").isin(testerList:_*)))
^
将外部方法作为字段附加。甚至提供一个自定义的@GraphQLContext
,它返回其他ResolverBuilder
(稍后将它们映射到字段)。
要添加指令,您可以创建用Resolver
进行元注释的注释(有关示例,请参见测试)。
最后,您当然可以为@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<Review> getReviews(@GraphQLContext User user) {
return ...; //somehow get the review for this user
}
}
,类型@GraphQLContext
现在具有一个User
字段(即使review: [Review]
类没有该字段)。