Приветствую!
Есть какой-то сторонний API, пусть это будет Salesforce. У Salesforce можно попросить состояние каких-то структур, к примеру, “Клиент”. Пока разберём случай, когда мы клиентов pull’им, push модель игнорируем.
В нашей event-sourced системе тоже есть клиенты, и их структура даже совпадает с той, что есть в Salesforce.
Предположим, наша система знает о клиенте:
{
"name": "Василий",
"income": 300000,
"income_period": "nanosecond"
}
А на очередной pull клиентов, Salesforce возвращает нам следующую картину:
{
"clients": [
{
"name": "Василий",
"income": 300000,
"income_period": "second"
},
{
"name": "Андрей",
"income": 20,
"income_period": "month"
}]
}
Оказалось, что Василий теперь зарабатывает не 300к в наносек, а 300к в сек, а ещё появился Андрей.
Я вижу два варината: один большой SalesforceUpdateReceived
со всем этим ответом, который потом пытаются накатить все сущности, или какая-то штука, которая это переведёт в UserSignedUp
(у нас появился Андрей), и IncomePeriodUpdated
(если есть имя получше - поправьте).
Есть ли что-то, что я упустил? Есть ли какой-нибудь принцип? Есть ли какие-нибудь советы?
Благодарю!