Я пытаюсь сделать несколько смешанных логи c в 2 таблицах Кассандры с Projectreactor и ReactiveCassandraRepository. Таблицы выглядят так:
1) userId (pk) | hashId
2) hashIf (pk) | userId
когда я получаю новый userId, мне нужно изменить это значение в обеих таблицах, используя данные пружины. Я пытаюсь это:
fun change(userId: String, oldUserId: String) {
userIdToHashRepository
.findAllByUserId(oldUserId)
.flatMap { response ->
// response is object like Check(val userId: String, val hash: String)
userIdToHashRepository.saveUserIdAndHash(
userId,
response.hash
)
hashToUserIdRepository.updateUserIdByHash(
userId,
response.hash
)
}
.doOnNext {
userIdToHashRepository.deleteAllByUserId(oldUserId.toString())
}
.subscribe()
}
, когда я начинаю с этими значениями в таблицах:
1) userId | hashId
111 111111
2) hashId | userId
111111 111
и newUserId=444
Я получаю это:
1)
userId | hashId
111 111111
(строка не добавляется и старая строка не удаляется, это печально)
2) hashId | userId
111111 444
111111 111
(строка добавляется, но я хочу удалить старую строку)
Так что, пожалуйста , можете сказать, почему работает только второй метод после flatMap? почему doOnNext не работает?
и как это исправить?
Спасибо!