110 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			110 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Code generated by sqlc. DO NOT EDIT.
 | 
						|
// source: accounts.sql
 | 
						|
 | 
						|
package postgres
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
 | 
						|
	"github.com/google/uuid"
 | 
						|
)
 | 
						|
 | 
						|
const createAccount = `-- name: CreateAccount :one
 | 
						|
INSERT INTO accounts
 | 
						|
(name, budget_id)
 | 
						|
VALUES ($1, $2)
 | 
						|
RETURNING id, budget_id, name
 | 
						|
`
 | 
						|
 | 
						|
type CreateAccountParams struct {
 | 
						|
	Name     string
 | 
						|
	BudgetID uuid.UUID
 | 
						|
}
 | 
						|
 | 
						|
func (q *Queries) CreateAccount(ctx context.Context, arg CreateAccountParams) (Account, error) {
 | 
						|
	row := q.db.QueryRowContext(ctx, createAccount, arg.Name, arg.BudgetID)
 | 
						|
	var i Account
 | 
						|
	err := row.Scan(&i.ID, &i.BudgetID, &i.Name)
 | 
						|
	return i, err
 | 
						|
}
 | 
						|
 | 
						|
const getAccount = `-- name: GetAccount :one
 | 
						|
SELECT accounts.id, accounts.budget_id, accounts.name FROM accounts
 | 
						|
WHERE accounts.id = $1
 | 
						|
`
 | 
						|
 | 
						|
func (q *Queries) GetAccount(ctx context.Context, id uuid.UUID) (Account, error) {
 | 
						|
	row := q.db.QueryRowContext(ctx, getAccount, id)
 | 
						|
	var i Account
 | 
						|
	err := row.Scan(&i.ID, &i.BudgetID, &i.Name)
 | 
						|
	return i, err
 | 
						|
}
 | 
						|
 | 
						|
const getAccounts = `-- name: GetAccounts :many
 | 
						|
SELECT accounts.id, accounts.budget_id, accounts.name FROM accounts
 | 
						|
WHERE accounts.budget_id = $1
 | 
						|
ORDER BY accounts.name
 | 
						|
`
 | 
						|
 | 
						|
func (q *Queries) GetAccounts(ctx context.Context, budgetID uuid.UUID) ([]Account, error) {
 | 
						|
	rows, err := q.db.QueryContext(ctx, getAccounts, budgetID)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	defer rows.Close()
 | 
						|
	var items []Account
 | 
						|
	for rows.Next() {
 | 
						|
		var i Account
 | 
						|
		if err := rows.Scan(&i.ID, &i.BudgetID, &i.Name); err != nil {
 | 
						|
			return nil, err
 | 
						|
		}
 | 
						|
		items = append(items, i)
 | 
						|
	}
 | 
						|
	if err := rows.Close(); err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	if err := rows.Err(); err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return items, nil
 | 
						|
}
 | 
						|
 | 
						|
const getAccountsWithBalance = `-- name: GetAccountsWithBalance :many
 | 
						|
SELECT accounts.id, accounts.name, SUM(transactions.amount)::decimal(12,2) as balance
 | 
						|
FROM accounts
 | 
						|
LEFT JOIN transactions ON transactions.account_id = accounts.id
 | 
						|
WHERE accounts.budget_id = $1
 | 
						|
AND transactions.date < NOW()
 | 
						|
GROUP BY accounts.id, accounts.name
 | 
						|
ORDER BY accounts.name
 | 
						|
`
 | 
						|
 | 
						|
type GetAccountsWithBalanceRow struct {
 | 
						|
	ID      uuid.UUID
 | 
						|
	Name    string
 | 
						|
	Balance Numeric
 | 
						|
}
 | 
						|
 | 
						|
func (q *Queries) GetAccountsWithBalance(ctx context.Context, budgetID uuid.UUID) ([]GetAccountsWithBalanceRow, error) {
 | 
						|
	rows, err := q.db.QueryContext(ctx, getAccountsWithBalance, budgetID)
 | 
						|
	if err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	defer rows.Close()
 | 
						|
	var items []GetAccountsWithBalanceRow
 | 
						|
	for rows.Next() {
 | 
						|
		var i GetAccountsWithBalanceRow
 | 
						|
		if err := rows.Scan(&i.ID, &i.Name, &i.Balance); err != nil {
 | 
						|
			return nil, err
 | 
						|
		}
 | 
						|
		items = append(items, i)
 | 
						|
	}
 | 
						|
	if err := rows.Close(); err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	if err := rows.Err(); err != nil {
 | 
						|
		return nil, err
 | 
						|
	}
 | 
						|
	return items, nil
 | 
						|
}
 |