Documentation
¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
var DB *gorm.DB
DB is the database used by the backend.
Functions ¶
func ConnectDatabase ¶ added in v0.1.0
func ConnectDatabase() error
ConnectDatabase connects to the database DB.
Types ¶
type Account ¶ added in v0.1.0
type Account struct { Model Name string `json:"name,omitempty"` BudgetID uint64 `json:"budgetId"` Budget Budget `json:"-"` OnBudget bool `json:"onBudget"` // Always false when external: true External bool `json:"external"` Balance decimal.Decimal `json:"balance" gorm:"-"` ReconciledBalance decimal.Decimal `json:"reconciledBalance" gorm:"-"` }
Account represents an asset account, e.g. a bank account.
func (*Account) BeforeSave ¶ added in v0.5.0
BeforeSave sets OnBudget to false when External is true.
func (Account) SumReconciledTransactions ¶ added in v0.7.0
Transactions returns all transactions for this account.
func (Account) Transactions ¶ added in v0.1.0
func (a Account) Transactions() []Transaction
Transactions returns all transactions for this account.
func (Account) WithCalculations ¶ added in v0.7.0
WithCalculations returns a pointer to the account with the balance calculated.
type Allocation ¶ added in v0.1.0
type Allocation struct { Model Month uint8 `json:"month" gorm:"uniqueIndex:year_month;check:month_valid,month >= 1 AND month <= 12"` Year uint `json:"year" gorm:"uniqueIndex:year_month"` Amount decimal.Decimal `json:"amount" gorm:"type:DECIMAL(20,8)"` EnvelopeID uint64 `json:"envelopeId,omitempty"` Envelope Envelope `json:"-"` }
Allocation represents the allocation of money to an Envelope for a specific month.
type Budget ¶
type Budget struct { Model Name string `json:"name,omitempty"` Note string `json:"note,omitempty"` Currency string `json:"currency,omitempty"` }
Budget represents a budget
A budget is the highest level of organization in Envelope Zero, all other resources reference it directly or transitively.
type Category ¶ added in v0.1.0
type Category struct { Model Name string `json:"name,omitempty"` BudgetID uint64 `json:"budgetId"` Budget Budget `json:"-"` Note string `json:"note,omitempty"` }
Category represents a category of envelopes.
type Envelope ¶ added in v0.1.0
type Envelope struct { Model Name string `json:"name,omitempty"` CategoryID uint64 `json:"categoryId"` Category Category `json:"-"` Note string `json:"note,omitempty"` }
Envelope represents an envelope in your budget.
type Model ¶ added in v0.1.0
type Model struct { ID uint64 `json:"id"` CreatedAt time.Time `json:"createdAt"` UpdatedAt time.Time `json:"updatedAt"` DeletedAt *gorm.DeletedAt `json:"deletedAt,omitempty" gorm:"index"` }
Model is the base model for all other models in Envelope Zero.
type Transaction ¶ added in v0.1.0
type Transaction struct { Model Date time.Time `json:"date,omitempty"` Amount decimal.Decimal `json:"amount" gorm:"type:DECIMAL(20,8)"` Note string `json:"note,omitempty"` BudgetID uint64 `json:"budgetId,omitempty"` Budget Budget `json:"-"` SourceAccountID uint64 `json:"sourceAccountId,omitempty"` SourceAccount Account `json:"-"` DestinationAccountID uint64 `json:"destinationAccountId,omitempty"` DestinationAccount Account `json:"-"` EnvelopeID uint64 `json:"envelopeId,omitempty"` Envelope Envelope `json:"-"` Reconciled bool `json:"reconciled"` }
Transaction represents a transaction between two accounts.
func (*Transaction) AfterFind ¶ added in v0.5.0
func (t *Transaction) AfterFind(tx *gorm.DB) (err error)
AfterFind updates the timestamps to use UTC as timezone, not +0000. Yes, this is different.
We already store them in UTC, but somehow reading them from the database returns them as +0000.
func (*Transaction) BeforeSave ¶ added in v0.5.0
func (t *Transaction) BeforeSave(tx *gorm.DB) (err error)
BeforeSave sets the timezone for the Date for UTC.