Объединение вызовов репозитория

Правильный способ объединения нескольких методов в цепочку вызывает реактивный, т.е. без блокировки.

Вот похожий вопрос.

Цепочка вызовов методов с использованием RxJava

/**
 * Delete a user, including VerificationToken and PasswordResetToken if exist.
 * 
 * @param user The user to delete.
 * @return A void Mono.
 */
@Override
public Mono<Void> deleteUser(final User user)  {               

    return tokenRepository.findByUser(user) //May return empty
            .flatMap((VerificationToken t) -> {
                return tokenRepository.delete(t); //Token exists, delete
            })
            .then(passwordTokenRepository.findByUser(user) //May return empty
                    .flatMap((PasswordResetToken t) -> {
                        return passwordTokenRepository.delete(t); //Token exists, delete
                    }))
            .then(userRepository.delete(user)); //Must execute regardless
}

У меня есть несколько вызовов методов для трех разных ReactiveCrudRepositories, где первые два вызова просто проверяют существующие токены и могут вернуться с пустым Mono, если он не найден. Все методы должны завершиться, но удаление пользователя должно происходить всегда, независимо от того, находит ли какой-либо из первых двух вызовов токены.

Есть ли лучший способ сделать это или это правильно?

0 ответов

Другие вопросы по тегам