test balances push

This commit is contained in:
Bel LaPointe
2023-10-25 07:16:42 -06:00
parent 29fec124af
commit a76e7b5546
4 changed files with 60 additions and 0 deletions

View File

@@ -1,5 +1,7 @@
package ledger
import "slices"
type Deltas []Delta
func (deltas Deltas) Like(like ...Like) Deltas {
@@ -12,6 +14,28 @@ func (deltas Deltas) Like(like ...Like) Deltas {
return result
}
func (deltas Deltas) Register() (map[string]Balances, error) {
dateToBalances := map[string]Balances{}
for _, delta := range deltas {
if _, ok := dateToBalances[delta.Date]; !ok {
dateToBalances[delta.Date] = make(Balances)
}
dateToBalances[delta.Date].Push(delta)
}
dates := make([]string, 0, len(dateToBalances)+1)
for k := range dateToBalances {
dates = append(dates, k)
}
slices.Sort(dates)
for i := range dates {
if i == 0 {
continue
}
dateToBalances[dates[i]].PushAll(dateToBalances[dates[i-1]])
}
return dateToBalances, nil
}
func (deltas Deltas) Balances() (Balances, error) {
result := make(Balances)
for _, delta := range deltas {