-- name: GetTransaction :one SELECT * FROM display_transactions WHERE id = $1; -- name: CreateTransaction :one INSERT INTO transactions (date, memo, amount, account_id, payee_id, category_id, group_id, status) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) RETURNING id; -- name: UpdateTransaction :exec UPDATE transactions SET date = $1, memo = $2, amount = $3, payee_id = $4, category_id = $5 WHERE id = $6; -- name: SetTransactionReconciled :exec UPDATE transactions SET status = 'Reconciled' WHERE id = $1; -- name: DeleteTransaction :exec DELETE FROM transactions WHERE id = $1; -- name: GetAllTransactionsForBudget :many SELECT t.* FROM display_transactions AS t WHERE t.budget_id = $1; -- name: GetTransactionsForAccount :many SELECT t.* FROM display_transactions AS t WHERE t.account_id = $1; -- name: DeleteAllTransactions :execrows DELETE FROM transactions USING accounts WHERE accounts.budget_id = @budget_id AND accounts.id = transactions.account_id; -- name: GetTransactionsByMonthAndCategory :many SELECT * FROM transactions_by_month WHERE transactions_by_month.budget_id = @budget_id; -- name: GetProblematicTransactions :many SELECT transactions.* FROM display_transactions AS transactions LEFT JOIN accounts ON transactions.account_id = accounts.id LEFT JOIN transactions AS otherGroupTransaction ON transactions.group_id = otherGroupTransaction.group_id AND transactions.id != otherGroupTransaction.id AND transactions.account_id != otherGroupTransaction.account_id LEFT JOIn accounts AS otherGroupAccount ON otherGroupTransaction.account_id = otherGroupAccount.id WHERE transactions.category_id IS NULL AND accounts.on_budget AND (otherGroupAccount.id IS NULL OR NOT otherGroupAccount.on_budget) AND accounts.budget_id = $1; -- name: GetFilteredTransactions :many SELECT transactions.* FROM display_transactions AS transactions WHERE (NOT @filter_category::boolean OR transactions.category_id = @category_id) AND (NOT @filter_account::boolean OR transactions.account_id = @account_id) AND (NOT @filter_payee::boolean OR transactions.payee_id = @payee_id) AND transactions.date BETWEEN @from_date AND @to_date AND transactions.budget_id = @budget_id;