Objetar filtro de consulta por Lista de chaves que têm um pai
Gostaria de criar um método Api via Google App Engine (Objectify) que retorne um CollectionResponse das postagens das pessoas que estou seguindo, classificadas por data decrescente.
Eu tenho uma entidadePost
e entidadeProfile
os quais têmLong id
como sua chave.
oPost
A entidade possui a seguinte propriedade, especificando que possui um pai:
@Parent
private Key<Profile> profileKey;
oProfile
A entidade possui a seguinte propriedade armazenando umList
doid
das pessoas que o perfil está seguindo:
// Ids of the profiles this person follows
private List<Long> following = new ArrayList<>(0);
Eu estava pensando então, eu poderia fazer algo assim:
List<Long> idsProfile = profile.getFollowing();
Query<Goal> query = ofy().load().type(Post.class)
.order("-createdDate")
.filterKey("in", idsProfile)
.limit(Constants.DEFAULT_LIST_LIMIT);
if (cursor != null) {
query = query.startAt(Cursor.fromWebSafeString(cursor));
}
QueryResultIterator<Goal> queryIterator = query.iterator();
List<Post> postList = new ArrayList<Post>(Constants.DEFAULT_LIST_LIMIT);
while (queryIterator.hasNext()) {
postList.add(queryIterator.next());
}
return CollectionResponse.<Post>builder().setItems(postList).setNextPageToken(queryIterator.getCursor().toWebSafeString()).build();
O que estou fazendo aqui é obter umList
de todo oid
deProfile
alguém está seguindo e tentando consultar e filtrar issoList
para retornar apenas oPost
por esses usuários.
Mas estou recebendo este erro:
{
"error": {
"errors": [
{
"domain": "global",
"reason": "badRequest",
"message": "java.lang.IllegalArgumentException: __key__ filter value must be a Key"
}
],
"code": 400,
"message": "java.lang.IllegalArgumentException: __key__ filter value must be a Key"
}
}
Eu tenho tentado coisas diferentes dentro do.filterKey("in", idsProfile)
pouco, mas não consigo fazê-lo funcionar.
Alguém poderia me ajudar com essa parte para fazer isso funcionar? Obrigado!