Latihan 1 dari materi Event Sourcing di Design Patterns — praktek dengan editor kode interaktif, test case otomatis, dan hint terpandu. Langsung jalan di browser.
Bangun Account aggregate dengan event sourcing.
createAccount(events), return aggregate object. events adalah array event awal (bisa kosong). State direkonstruksi dengan apply semua event.
Event types:
{ type: "Deposited", amount }: tambah ke balance{ type: "Withdrew", amount }: kurangi balanceAggregate punya method:
balance(): return balance saat inideposit(amount): jika amount <= 0 throw. Push event { type: "Deposited", amount } dan apply.withdraw(amount): jika amount > balance throw "Insufficient funds". Push event dan apply.getEvents(): return array semua event (termasuk yang awal).replay(events): static reset, rebuild state dari events baru. Disediakan lewat rebuild(events) top-level function yang return aggregate baru.