I am using https://github.com/graphql-java-kickstart/graphql-spring-boot on a Spring Boot project. I need to filtering on subfield. For example:
query{
userByEmail(email:"[email protected]"){
firstName
lastName
roles(take: 2){
name
}
}
}
Here is my codes:
schema
type User{
id: ID!
firstName: String
lastName: String
email: String
roles: [Role!]
birthDate: Date
}
type Query {
userByEmail(email:String): User
}
query resolver
@Component
@RequiredArgsConstructor
public class UserQueryResolver implements GraphQLQueryResolver {
private final IUserRepository userRepository;
public User userByEmail(String email) {
return userRepository.findByEmail(email).orElse(null);
}
}
resolver
@Component
@RequiredArgsConstructor
@Slf4j
public class UserResolver implements GraphQLResolver<User> {
public CompletableFuture<List<Role>> roles(User user, DataFetchingEnvironment dfe) {
final DataLoader<Long, List<Role>> dataloader = dfe.getDataLoaderRegistry().getDataLoader("userRoleDataLoader");
return dataloader.load(user.getId(), user);
}
}
Everything works well on my application but I could not integrate filtering on subfields. When I am setting the User type on schema like:
type User{
id: ID!
firstName: String
lastName: String
email: String
roles(take: Int): [Role!]
birthDate: Date
}
DataFetchingEnvironment dfe will be null. How to I do filtering on subfield?