I use webflux with r2dbc.
I try to save in two tables in one service, but there is only one actual save.
There may be a way to do flatmap twice in the handler, but I want to use transaction in service.
Handler.java
Mono<ServerResponse> save(ServerRequest request) {
return request.bodyToMono(Todo.class)
.flatMap(todo-> todoService.save(todo))
.flatMap(todo -> ok().build());
}
TodoService.java
public Mono<Todo> save(Todo todo) {
todoLogRepository.save(getTodoLog(todo)); // this now work
return todoRepository.save(todo);
}
Router.java
@Bean
public RouterFunction<?> routes(InvestmentHandler handler) {
return route(POST("/save"), handler::save);
}