Java List to Reactor Flux to Identity Map
Я пытаюсь реализовать несколько простых Spring Boot GraphQL BatchMapping.
The
@BatchMapping
получает, а затем вызывает
@Repository
и превращает результат в
Map<Book, Author>
. Я изо всех сил использую Reactor
Flux
а также
Mono
.
@BatchMapping
Mono<Map<Book, Author>> author(List<Book> books) {
List<String> authorIds = books.stream().map(book -> book.authorId).toList();
Flux<Author> authors = authorRepository.findAllById(authorIds);
return authors.mapToTheBooksInTheCorrectOrder???();
}
У каждого есть один , но несколько s могут иметь один и тот же .
Я хотел бы вернуть (точнее a ), где каждый
ключBook
и значение соответствующее.
Вы можете предположить, что s внутри (возвращается
authorRepository.findAllById
) уникальны, и что возвращаемый
Author
s имеют тот же порядок (первое появление), что и
authorId
из :
book1 = { id: "1", name: "A Scanner Darkly", authorId = "2" }
book2 = { id: "2", name: "High Fidelity", authorId = "1" }
book3 = { id: "3", name: "The Man In The High Castle", authorId = "2" }
приведет к:
authors = [
{ id: "2", name: "Philip K. Dick" }
{ id: "1", name: "Nick Hornby" }
]
Другими словами:
- за каждую запись в
List<Book>
создать ключ вMap
- а затем получить соответствующее значение из
Flux<Author>
Результат метода должен быть (для этого примера):
{
book1 : author2,
book2 : author1,
book3 : author2
}
Все завернуто в
Mono<Map>
.