diff --git a/http/always-needed-data.go b/http/always-needed-data.go index 8530046..704d6d1 100644 --- a/http/always-needed-data.go +++ b/http/always-needed-data.go @@ -9,8 +9,10 @@ import ( ) type AlwaysNeededData struct { - Budget postgres.Budget - Accounts []postgres.GetAccountsWithBalanceRow + Budget postgres.Budget + Accounts []postgres.GetAccountsWithBalanceRow + OnBudgetAccounts []postgres.GetAccountsWithBalanceRow + OffBudgetAccounts []postgres.GetAccountsWithBalanceRow } func (h *Handler) getImportantData(c *gin.Context) { @@ -34,9 +36,20 @@ func (h *Handler) getImportantData(c *gin.Context) { return } + var onBudgetAccounts, offBudgetAccounts []postgres.GetAccountsWithBalanceRow + for _, account := range accounts { + if account.OnBudget { + onBudgetAccounts = append(onBudgetAccounts, account) + } else { + offBudgetAccounts = append(offBudgetAccounts, account) + } + } + base := AlwaysNeededData{ - Accounts: accounts, - Budget: budget, + Accounts: accounts, + OnBudgetAccounts: onBudgetAccounts, + OffBudgetAccounts: offBudgetAccounts, + Budget: budget, } c.Set("data", base) diff --git a/postgres/accounts.sql.go b/postgres/accounts.sql.go index 67c9100..3e2aaba 100644 --- a/postgres/accounts.sql.go +++ b/postgres/accounts.sql.go @@ -85,7 +85,7 @@ func (q *Queries) GetAccounts(ctx context.Context, budgetID uuid.UUID) ([]Accoun } const getAccountsWithBalance = `-- name: GetAccountsWithBalance :many -SELECT accounts.id, accounts.name, SUM(transactions.amount)::decimal(12,2) as balance +SELECT accounts.id, accounts.name, accounts.on_budget, SUM(transactions.amount)::decimal(12,2) as balance FROM accounts LEFT JOIN transactions ON transactions.account_id = accounts.id WHERE accounts.budget_id = $1 @@ -95,9 +95,10 @@ ORDER BY accounts.name ` type GetAccountsWithBalanceRow struct { - ID uuid.UUID - Name string - Balance Numeric + ID uuid.UUID + Name string + OnBudget bool + Balance Numeric } func (q *Queries) GetAccountsWithBalance(ctx context.Context, budgetID uuid.UUID) ([]GetAccountsWithBalanceRow, error) { @@ -109,7 +110,12 @@ func (q *Queries) GetAccountsWithBalance(ctx context.Context, budgetID uuid.UUID var items []GetAccountsWithBalanceRow for rows.Next() { var i GetAccountsWithBalanceRow - if err := rows.Scan(&i.ID, &i.Name, &i.Balance); err != nil { + if err := rows.Scan( + &i.ID, + &i.Name, + &i.OnBudget, + &i.Balance, + ); err != nil { return nil, err } items = append(items, i) diff --git a/postgres/queries/accounts.sql b/postgres/queries/accounts.sql index 39e4cb6..bc9bde6 100644 --- a/postgres/queries/accounts.sql +++ b/postgres/queries/accounts.sql @@ -14,7 +14,7 @@ WHERE accounts.budget_id = $1 ORDER BY accounts.name; -- name: GetAccountsWithBalance :many -SELECT accounts.id, accounts.name, SUM(transactions.amount)::decimal(12,2) as balance +SELECT accounts.id, accounts.name, accounts.on_budget, SUM(transactions.amount)::decimal(12,2) as balance FROM accounts LEFT JOIN transactions ON transactions.account_id = accounts.id WHERE accounts.budget_id = $1 diff --git a/web/budget-sidebar.tpl b/web/budget-sidebar.tpl index a88bd06..6b48d1f 100644 --- a/web/budget-sidebar.tpl +++ b/web/budget-sidebar.tpl @@ -6,23 +6,31 @@