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 }