> не уверен тут, что ES предполагает, что мы *обязаны* собирать больше одного изменения перед тем, как обновить стейт (ну либо я не так понял мысль)
не, смотри:
у тебя есть два варианта получить состояние. в качестве примера я буду приводить сумму пользователей в системе.
вариант первый, сразу считать информацию:
sum = 0
new_user_count = 2
sum += new_user_count
new_user_count = -1
sum += new_user_count
sum # => 1
в этом случае ты не знаешь когда сколько людей пришло и на любое время у тебя есть только текущее состояние.
вариант второй, собирать события связанные с пользователями, а потом считать состояние
event_store = []
event_store << NewUser(…)
event_store << NewUser(…)
event_store << UserDeleted(…)
sum = 0
event_store.each do |event|
case event.type
when NewUser
sum += 1
when UserDeleted
sum -= 1
end
end
sum # => 1