Split displayed accounts by on- or off-budget

This commit is contained in:
Jan Bader 2021-12-07 21:07:09 +00:00
parent 04fd687324
commit f4ddf12214
4 changed files with 41 additions and 14 deletions

View File

@ -11,6 +11,8 @@ import (
type AlwaysNeededData struct { type AlwaysNeededData struct {
Budget postgres.Budget Budget postgres.Budget
Accounts []postgres.GetAccountsWithBalanceRow Accounts []postgres.GetAccountsWithBalanceRow
OnBudgetAccounts []postgres.GetAccountsWithBalanceRow
OffBudgetAccounts []postgres.GetAccountsWithBalanceRow
} }
func (h *Handler) getImportantData(c *gin.Context) { func (h *Handler) getImportantData(c *gin.Context) {
@ -34,8 +36,19 @@ func (h *Handler) getImportantData(c *gin.Context) {
return return
} }
var onBudgetAccounts, offBudgetAccounts []postgres.GetAccountsWithBalanceRow
for _, account := range accounts {
if account.OnBudget {
onBudgetAccounts = append(onBudgetAccounts, account)
} else {
offBudgetAccounts = append(offBudgetAccounts, account)
}
}
base := AlwaysNeededData{ base := AlwaysNeededData{
Accounts: accounts, Accounts: accounts,
OnBudgetAccounts: onBudgetAccounts,
OffBudgetAccounts: offBudgetAccounts,
Budget: budget, Budget: budget,
} }

View File

@ -85,7 +85,7 @@ func (q *Queries) GetAccounts(ctx context.Context, budgetID uuid.UUID) ([]Accoun
} }
const getAccountsWithBalance = `-- name: GetAccountsWithBalance :many 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 FROM accounts
LEFT JOIN transactions ON transactions.account_id = accounts.id LEFT JOIN transactions ON transactions.account_id = accounts.id
WHERE accounts.budget_id = $1 WHERE accounts.budget_id = $1
@ -97,6 +97,7 @@ ORDER BY accounts.name
type GetAccountsWithBalanceRow struct { type GetAccountsWithBalanceRow struct {
ID uuid.UUID ID uuid.UUID
Name string Name string
OnBudget bool
Balance Numeric Balance Numeric
} }
@ -109,7 +110,12 @@ func (q *Queries) GetAccountsWithBalance(ctx context.Context, budgetID uuid.UUID
var items []GetAccountsWithBalanceRow var items []GetAccountsWithBalanceRow
for rows.Next() { for rows.Next() {
var i GetAccountsWithBalanceRow 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 return nil, err
} }
items = append(items, i) items = append(items, i)

View File

@ -14,7 +14,7 @@ WHERE accounts.budget_id = $1
ORDER BY accounts.name; ORDER BY accounts.name;
-- name: GetAccountsWithBalance :many -- 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 FROM accounts
LEFT JOIN transactions ON transactions.account_id = accounts.id LEFT JOIN transactions ON transactions.account_id = accounts.id
WHERE accounts.budget_id = $1 WHERE accounts.budget_id = $1

View File

@ -6,23 +6,31 @@
<li> <li>
On-Budget Accounts On-Budget Accounts
<ul class="two-valued"> <ul class="two-valued">
{{range .Accounts}} {{range .OnBudgetAccounts}}
<li> <li>
<a href="/budget/{{$.Budget.ID}}/account/{{.ID}}">{{.Name}}</a> <a href="/budget/{{$.Budget.ID}}/account/{{.ID}}">{{.Name}}</a>
{{template "amount" .Balance}} {{template "amount" .Balance}}
</li> </li>
{{end}} {{end}}
<li>
<a href="/budget/{{$.Budget.ID}}/accounts">Edit accounts</a>
</li>
</ul> </ul>
</li> </li>
<li> <li>
Off-Budget Accounts Off-Budget Accounts
<ul class="two-valued">
{{range .OffBudgetAccounts}}
<li>
<a href="/budget/{{$.Budget.ID}}/account/{{.ID}}">{{.Name}}</a>
{{template "amount" .Balance}}
</li>
{{end}}
</ul>
</li> </li>
<li> <li>
Closed Accounts Closed Accounts
</li> </li>
<li>
<a href="/budget/{{$.Budget.ID}}/accounts">Edit accounts</a>
</li>
<li> <li>
+ Add Account + Add Account
</li> </li>