28 lines
1.1 KiB
Go
28 lines
1.1 KiB
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/tech/sendico/pkg/db/storable"
|
|
"github.com/tech/sendico/pkg/model"
|
|
"go.mongodb.org/mongo-driver/bson/primitive"
|
|
)
|
|
|
|
// AccountBalance represents the current balance of a ledger account.
|
|
// This is a materialized view updated atomically with journal entries.
|
|
type AccountBalance struct {
|
|
storable.Base `bson:",inline" json:",inline"`
|
|
model.PermissionBound `bson:",inline" json:",inline"`
|
|
|
|
AccountRef primitive.ObjectID `bson:"accountRef" json:"accountRef"` // unique per account+currency
|
|
Balance string `bson:"balance" json:"balance"` // stored as string for exact decimal
|
|
Currency string `bson:"currency" json:"currency"` // ISO 4217 currency code
|
|
Version int64 `bson:"version" json:"version"` // for optimistic locking
|
|
LastUpdated time.Time `bson:"lastUpdated" json:"lastUpdated"` // timestamp of last balance update
|
|
}
|
|
|
|
// Collection implements storable.Storable.
|
|
func (*AccountBalance) Collection() string {
|
|
return AccountBalancesCollection
|
|
}
|