Init
This commit is contained in:
88
backend/internal/models/models.go
Normal file
88
backend/internal/models/models.go
Normal file
@@ -0,0 +1,88 @@
|
||||
package models
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
"github.com/shopspring/decimal"
|
||||
)
|
||||
|
||||
type CategoryType string
|
||||
|
||||
const (
|
||||
CategoryBill CategoryType = "bill"
|
||||
CategoryVariableExpense CategoryType = "variable_expense"
|
||||
CategoryDebt CategoryType = "debt"
|
||||
CategorySaving CategoryType = "saving"
|
||||
CategoryInvestment CategoryType = "investment"
|
||||
CategoryIncome CategoryType = "income"
|
||||
)
|
||||
|
||||
type User struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
Email string `json:"email"`
|
||||
PasswordHash string `json:"-"`
|
||||
OIDCSubject *string `json:"oidc_subject,omitempty"`
|
||||
DisplayName string `json:"display_name"`
|
||||
PreferredLocale string `json:"preferred_locale"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
type Category struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Name string `json:"name"`
|
||||
Type CategoryType `json:"type"`
|
||||
Icon string `json:"icon"`
|
||||
SortOrder int `json:"sort_order"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
type Budget struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
UserID uuid.UUID `json:"user_id"`
|
||||
Name string `json:"name"`
|
||||
StartDate time.Time `json:"start_date"`
|
||||
EndDate time.Time `json:"end_date"`
|
||||
Currency string `json:"currency"`
|
||||
CarryoverAmount decimal.Decimal `json:"carryover_amount"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
type BudgetItem struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
BudgetID uuid.UUID `json:"budget_id"`
|
||||
CategoryID uuid.UUID `json:"category_id"`
|
||||
CategoryName string `json:"category_name,omitempty"`
|
||||
CategoryType CategoryType `json:"category_type,omitempty"`
|
||||
BudgetedAmount decimal.Decimal `json:"budgeted_amount"`
|
||||
ActualAmount decimal.Decimal `json:"actual_amount"`
|
||||
Notes string `json:"notes"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
type BudgetTotals struct {
|
||||
IncomeBudget decimal.Decimal `json:"income_budget"`
|
||||
IncomeActual decimal.Decimal `json:"income_actual"`
|
||||
BillsBudget decimal.Decimal `json:"bills_budget"`
|
||||
BillsActual decimal.Decimal `json:"bills_actual"`
|
||||
ExpensesBudget decimal.Decimal `json:"expenses_budget"`
|
||||
ExpensesActual decimal.Decimal `json:"expenses_actual"`
|
||||
DebtsBudget decimal.Decimal `json:"debts_budget"`
|
||||
DebtsActual decimal.Decimal `json:"debts_actual"`
|
||||
SavingsBudget decimal.Decimal `json:"savings_budget"`
|
||||
SavingsActual decimal.Decimal `json:"savings_actual"`
|
||||
InvestmentsBudget decimal.Decimal `json:"investments_budget"`
|
||||
InvestmentsActual decimal.Decimal `json:"investments_actual"`
|
||||
Available decimal.Decimal `json:"available"`
|
||||
}
|
||||
|
||||
type BudgetDetail struct {
|
||||
Budget
|
||||
Items []BudgetItem `json:"items"`
|
||||
Totals BudgetTotals `json:"totals"`
|
||||
}
|
||||
Reference in New Issue
Block a user