From 82045ceed7cc74a10804c3b12b51273cfd2fbad9 Mon Sep 17 00:00:00 2001 From: Jan Bader Date: Mon, 6 Dec 2021 21:18:29 +0000 Subject: [PATCH] Fix joins --- postgres/queries/transactions.sql | 14 ++++++++------ postgres/transactions.sql.go | 30 ++++++++++++++++++------------ 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/postgres/queries/transactions.sql b/postgres/queries/transactions.sql index 9a90e77..b38e4d6 100644 --- a/postgres/queries/transactions.sql +++ b/postgres/queries/transactions.sql @@ -6,22 +6,24 @@ RETURNING *; -- name: GetTransactionsForBudget :many SELECT transactions.id, transactions.date, transactions.memo, transactions.amount, - accounts.name as account, payees.name as payee + accounts.name as account, COALESCE(payees.name, '') as payee, COALESCE(category_groups.name, '') as category_group, COALESCE(categories.name, '') as category FROM transactions INNER JOIN accounts ON accounts.id = transactions.account_id -INNER JOIN payees ON payees.id = transactions.payee_id +LEFT JOIN payees ON payees.id = transactions.payee_id +LEFT JOIN categories ON categories.id = transactions.category_id +LEFT JOIN category_groups ON category_groups.id = categories.category_group_id WHERE accounts.budget_id = $1 ORDER BY transactions.date DESC LIMIT 200; -- name: GetTransactionsForAccount :many SELECT transactions.id, transactions.date, transactions.memo, transactions.amount, - accounts.name as account, payees.name as payee, category_groups.name as category_group, categories.name as category + accounts.name as account, COALESCE(payees.name, '') as payee, COALESCE(category_groups.name, '') as category_group, COALESCE(categories.name, '') as category FROM transactions INNER JOIN accounts ON accounts.id = transactions.account_id -INNER JOIN payees ON payees.id = transactions.payee_id -INNER JOIN categories ON categories.id = transactions.category_id -INNER JOIN category_groups ON category_groups.id = categories.category_group_id +LEFT JOIN payees ON payees.id = transactions.payee_id +LEFT JOIN categories ON categories.id = transactions.category_id +LEFT JOIN category_groups ON category_groups.id = categories.category_group_id WHERE transactions.account_id = $1 ORDER BY transactions.date DESC LIMIT 200; \ No newline at end of file diff --git a/postgres/transactions.sql.go b/postgres/transactions.sql.go index 48169fe..832d28d 100644 --- a/postgres/transactions.sql.go +++ b/postgres/transactions.sql.go @@ -50,12 +50,12 @@ func (q *Queries) CreateTransaction(ctx context.Context, arg CreateTransactionPa const getTransactionsForAccount = `-- name: GetTransactionsForAccount :many SELECT transactions.id, transactions.date, transactions.memo, transactions.amount, - accounts.name as account, payees.name as payee, category_groups.name as category_group, categories.name as category + accounts.name as account, COALESCE(payees.name, '') as payee, COALESCE(category_groups.name, '') as category_group, COALESCE(categories.name, '') as category FROM transactions INNER JOIN accounts ON accounts.id = transactions.account_id -INNER JOIN payees ON payees.id = transactions.payee_id -INNER JOIN categories ON categories.id = transactions.category_id -INNER JOIN category_groups ON category_groups.id = categories.category_group_id +LEFT JOIN payees ON payees.id = transactions.payee_id +LEFT JOIN categories ON categories.id = transactions.category_id +LEFT JOIN category_groups ON category_groups.id = categories.category_group_id WHERE transactions.account_id = $1 ORDER BY transactions.date DESC LIMIT 200 @@ -106,22 +106,26 @@ func (q *Queries) GetTransactionsForAccount(ctx context.Context, accountID uuid. const getTransactionsForBudget = `-- name: GetTransactionsForBudget :many SELECT transactions.id, transactions.date, transactions.memo, transactions.amount, - accounts.name as account, payees.name as payee + accounts.name as account, COALESCE(payees.name, '') as payee, COALESCE(category_groups.name, '') as category_group, COALESCE(categories.name, '') as category FROM transactions INNER JOIN accounts ON accounts.id = transactions.account_id -INNER JOIN payees ON payees.id = transactions.payee_id +LEFT JOIN payees ON payees.id = transactions.payee_id +LEFT JOIN categories ON categories.id = transactions.category_id +LEFT JOIN category_groups ON category_groups.id = categories.category_group_id WHERE accounts.budget_id = $1 ORDER BY transactions.date DESC LIMIT 200 ` type GetTransactionsForBudgetRow struct { - ID uuid.UUID - Date time.Time - Memo string - Amount Numeric - Account string - Payee string + ID uuid.UUID + Date time.Time + Memo string + Amount Numeric + Account string + Payee string + CategoryGroup string + Category string } func (q *Queries) GetTransactionsForBudget(ctx context.Context, budgetID uuid.UUID) ([]GetTransactionsForBudgetRow, error) { @@ -140,6 +144,8 @@ func (q *Queries) GetTransactionsForBudget(ctx context.Context, budgetID uuid.UU &i.Amount, &i.Account, &i.Payee, + &i.CategoryGroup, + &i.Category, ); err != nil { return nil, err }