// Code generated by sqlc. DO NOT EDIT. // source: cumultative-balances.sql package postgres import ( "context" "time" "git.javil.eu/jacob1123/budgeteer/postgres/numeric" "github.com/google/uuid" ) const getCumultativeBalances = `-- name: GetCumultativeBalances :many SELECT COALESCE(ass.date, tra.date), COALESCE(ass.category_id, tra.category_id), COALESCE(ass.amount, 0)::decimal(12,2) as assignments, SUM(ass.amount) OVER (PARTITION BY ass.category_id ORDER BY ass.date)::decimal(12,2) as assignments_cum, COALESCE(tra.amount, 0)::decimal(12,2) as transactions, SUM(tra.amount) OVER (PARTITION BY tra.category_id ORDER BY tra.date)::decimal(12,2) as transactions_cum FROM assignments_by_month as ass FULL OUTER JOIN transactions_by_month as tra ON ass.date = tra.date AND ass.category_id = tra.category_id WHERE (ass.budget_id IS NULL OR ass.budget_id = $1) AND (tra.budget_id IS NULL OR tra.budget_id = $1) ORDER BY COALESCE(ass.date, tra.date), COALESCE(ass.category_id, tra.category_id) ` type GetCumultativeBalancesRow struct { Date time.Time CategoryID uuid.UUID Assignments numeric.Numeric AssignmentsCum numeric.Numeric Transactions numeric.Numeric TransactionsCum numeric.Numeric } func (q *Queries) GetCumultativeBalances(ctx context.Context, budgetID uuid.UUID) ([]GetCumultativeBalancesRow, error) { rows, err := q.db.QueryContext(ctx, getCumultativeBalances, budgetID) if err != nil { return nil, err } defer rows.Close() var items []GetCumultativeBalancesRow for rows.Next() { var i GetCumultativeBalancesRow if err := rows.Scan( &i.Date, &i.CategoryID, &i.Assignments, &i.AssignmentsCum, &i.Transactions, &i.TransactionsCum, ); 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 }