Deltas does Balances and Like
This commit is contained in:
28
ledger/deltas.go
Normal file
28
ledger/deltas.go
Normal file
@@ -0,0 +1,28 @@
|
||||
package ledger
|
||||
|
||||
type Deltas []Delta
|
||||
|
||||
func (deltas Deltas) Like(like ...Like) Deltas {
|
||||
result := make(Deltas, 0, len(deltas))
|
||||
for i := range deltas {
|
||||
if likes(like).all(deltas[i]) {
|
||||
result = append(result, deltas[i])
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func (deltas Deltas) Balances() (map[string]map[Currency]float64, error) {
|
||||
result := make(map[string]map[Currency]float64)
|
||||
for _, delta := range deltas {
|
||||
if _, ok := result[delta.Account]; !ok {
|
||||
result[delta.Account] = make(map[Currency]float64)
|
||||
}
|
||||
if _, ok := result[delta.Account][delta.Currency]; !ok {
|
||||
result[delta.Account][delta.Currency] = 0
|
||||
}
|
||||
result[delta.Account][delta.Currency] += delta.Value
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
Reference in New Issue
Block a user