From 8899ff5772a5e51e27ca62551e210e2b04ef6c34 Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Wed, 2 Mar 2022 21:14:00 +0000 Subject: [PATCH] Return and filter by is_open --- postgres/accounts.sql.go | 19 ++++++++++++++----- postgres/models.go | 1 + postgres/queries/accounts.sql | 5 ++++- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/postgres/accounts.sql.go b/postgres/accounts.sql.go index e913dd0..5746a0f 100644 --- a/postgres/accounts.sql.go +++ b/postgres/accounts.sql.go @@ -15,7 +15,7 @@ const createAccount = `-- name: CreateAccount :one INSERT INTO accounts (name, budget_id) VALUES ($1, $2) -RETURNING id, budget_id, name, on_budget +RETURNING id, budget_id, name, on_budget, is_open ` type CreateAccountParams struct { @@ -31,12 +31,13 @@ func (q *Queries) CreateAccount(ctx context.Context, arg CreateAccountParams) (A &i.BudgetID, &i.Name, &i.OnBudget, + &i.IsOpen, ) return i, err } const getAccount = `-- name: GetAccount :one -SELECT accounts.id, accounts.budget_id, accounts.name, accounts.on_budget FROM accounts +SELECT accounts.id, accounts.budget_id, accounts.name, accounts.on_budget, accounts.is_open FROM accounts WHERE accounts.id = $1 ` @@ -48,13 +49,15 @@ func (q *Queries) GetAccount(ctx context.Context, id uuid.UUID) (Account, error) &i.BudgetID, &i.Name, &i.OnBudget, + &i.IsOpen, ) return i, err } const getAccounts = `-- name: GetAccounts :many -SELECT accounts.id, accounts.budget_id, accounts.name, accounts.on_budget FROM accounts +SELECT accounts.id, accounts.budget_id, accounts.name, accounts.on_budget, accounts.is_open FROM accounts WHERE accounts.budget_id = $1 +AND accounts.is_open = TRUE ORDER BY accounts.name ` @@ -72,6 +75,7 @@ func (q *Queries) GetAccounts(ctx context.Context, budgetID uuid.UUID) ([]Accoun &i.BudgetID, &i.Name, &i.OnBudget, + &i.IsOpen, ); err != nil { return nil, err } @@ -87,13 +91,14 @@ func (q *Queries) GetAccounts(ctx context.Context, budgetID uuid.UUID) ([]Accoun } const getAccountsWithBalance = `-- name: GetAccountsWithBalance :many -SELECT accounts.id, accounts.name, accounts.on_budget, +SELECT accounts.id, accounts.name, accounts.on_budget, accounts.is_open, (SELECT MAX(transactions.date) FROM transactions WHERE transactions.account_id = accounts.id AND transactions.status = 'Reconciled')::date as last_reconciled, (SELECT SUM(transactions.amount) FROM transactions WHERE transactions.account_id = accounts.id AND transactions.date < NOW())::decimal(12,2) as working_balance, (SELECT SUM(transactions.amount) FROM transactions WHERE transactions.account_id = accounts.id AND transactions.date < NOW() AND transactions.status IN ('Cleared', 'Reconciled'))::decimal(12,2) as cleared_balance, (SELECT SUM(transactions.amount) FROM transactions WHERE transactions.account_id = accounts.id AND transactions.date < NOW() AND transactions.status = 'Reconciled')::decimal(12,2) as reconciled_balance FROM accounts WHERE accounts.budget_id = $1 +AND accounts.is_open = TRUE ORDER BY accounts.name ` @@ -101,6 +106,7 @@ type GetAccountsWithBalanceRow struct { ID uuid.UUID Name string OnBudget bool + IsOpen bool LastReconciled time.Time WorkingBalance numeric.Numeric ClearedBalance numeric.Numeric @@ -120,6 +126,7 @@ func (q *Queries) GetAccountsWithBalance(ctx context.Context, budgetID uuid.UUID &i.ID, &i.Name, &i.OnBudget, + &i.IsOpen, &i.LastReconciled, &i.WorkingBalance, &i.ClearedBalance, @@ -141,6 +148,7 @@ func (q *Queries) GetAccountsWithBalance(ctx context.Context, budgetID uuid.UUID const searchAccounts = `-- name: SearchAccounts :many SELECT accounts.id, accounts.budget_id, accounts.name, 'account' as type FROM accounts WHERE accounts.budget_id = $1 +AND accounts.is_open = TRUE AND accounts.name LIKE $2 ORDER BY accounts.name ` @@ -190,7 +198,7 @@ UPDATE accounts SET name = $1, on_budget = $2 WHERE accounts.id = $3 -RETURNING id, budget_id, name, on_budget +RETURNING id, budget_id, name, on_budget, is_open ` type UpdateAccountParams struct { @@ -207,6 +215,7 @@ func (q *Queries) UpdateAccount(ctx context.Context, arg UpdateAccountParams) (A &i.BudgetID, &i.Name, &i.OnBudget, + &i.IsOpen, ) return i, err } diff --git a/postgres/models.go b/postgres/models.go index bacb571..4e33e88 100644 --- a/postgres/models.go +++ b/postgres/models.go @@ -36,6 +36,7 @@ type Account struct { BudgetID uuid.UUID Name string OnBudget bool + IsOpen bool } type Assignment struct { diff --git a/postgres/queries/accounts.sql b/postgres/queries/accounts.sql index 5232c9d..6f363ce 100644 --- a/postgres/queries/accounts.sql +++ b/postgres/queries/accounts.sql @@ -11,21 +11,24 @@ WHERE accounts.id = $1; -- name: GetAccounts :many SELECT accounts.* FROM accounts WHERE accounts.budget_id = $1 +AND accounts.is_open = TRUE ORDER BY accounts.name; -- name: GetAccountsWithBalance :many -SELECT accounts.id, accounts.name, accounts.on_budget, +SELECT accounts.id, accounts.name, accounts.on_budget, accounts.is_open, (SELECT MAX(transactions.date) FROM transactions WHERE transactions.account_id = accounts.id AND transactions.status = 'Reconciled')::date as last_reconciled, (SELECT SUM(transactions.amount) FROM transactions WHERE transactions.account_id = accounts.id AND transactions.date < NOW())::decimal(12,2) as working_balance, (SELECT SUM(transactions.amount) FROM transactions WHERE transactions.account_id = accounts.id AND transactions.date < NOW() AND transactions.status IN ('Cleared', 'Reconciled'))::decimal(12,2) as cleared_balance, (SELECT SUM(transactions.amount) FROM transactions WHERE transactions.account_id = accounts.id AND transactions.date < NOW() AND transactions.status = 'Reconciled')::decimal(12,2) as reconciled_balance FROM accounts WHERE accounts.budget_id = $1 +AND accounts.is_open = TRUE ORDER BY accounts.name; -- name: SearchAccounts :many SELECT accounts.id, accounts.budget_id, accounts.name, 'account' as type FROM accounts WHERE accounts.budget_id = @budget_id +AND accounts.is_open = TRUE AND accounts.name LIKE @search ORDER BY accounts.name;