243 lines
6.3 KiB
Go
243 lines
6.3 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.28.0
|
|
// source: income.sql
|
|
|
|
package db
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
const createIncome = `-- name: CreateIncome :one
|
|
INSERT INTO incomes (project_id, budget_id, amount, income_at, income_type, income_bank, remark, status, created_user_id)
|
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9)
|
|
RETURNING id, project_id, budget_id, amount, income_at, income_type, income_bank, remark, status, created_at, created_user_id, updated_at, updated_user_id
|
|
`
|
|
|
|
type CreateIncomeParams struct {
|
|
ProjectID int64 `json:"project_id"`
|
|
BudgetID int64 `json:"budget_id"`
|
|
Amount pgtype.Numeric `json:"amount"`
|
|
IncomeAt time.Time `json:"income_at"`
|
|
IncomeType int32 `json:"income_type"`
|
|
IncomeBank int32 `json:"income_bank"`
|
|
Remark string `json:"remark"`
|
|
Status int16 `json:"status"`
|
|
CreatedUserID int32 `json:"created_user_id"`
|
|
}
|
|
|
|
func (q *Queries) CreateIncome(ctx context.Context, arg *CreateIncomeParams) (*Income, error) {
|
|
row := q.db.QueryRow(ctx, createIncome,
|
|
arg.ProjectID,
|
|
arg.BudgetID,
|
|
arg.Amount,
|
|
arg.IncomeAt,
|
|
arg.IncomeType,
|
|
arg.IncomeBank,
|
|
arg.Remark,
|
|
arg.Status,
|
|
arg.CreatedUserID,
|
|
)
|
|
var i Income
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.ProjectID,
|
|
&i.BudgetID,
|
|
&i.Amount,
|
|
&i.IncomeAt,
|
|
&i.IncomeType,
|
|
&i.IncomeBank,
|
|
&i.Remark,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.CreatedUserID,
|
|
&i.UpdatedAt,
|
|
&i.UpdatedUserID,
|
|
)
|
|
return &i, err
|
|
}
|
|
|
|
const getIncome = `-- name: GetIncome :one
|
|
SELECT id, project_id, budget_id, amount, income_at, income_type, income_bank, remark, status, created_at, created_user_id, updated_at, updated_user_id
|
|
FROM incomes
|
|
WHERE id = $1
|
|
LIMIT 1
|
|
`
|
|
|
|
func (q *Queries) GetIncome(ctx context.Context, id int64) (*Income, error) {
|
|
row := q.db.QueryRow(ctx, getIncome, id)
|
|
var i Income
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.ProjectID,
|
|
&i.BudgetID,
|
|
&i.Amount,
|
|
&i.IncomeAt,
|
|
&i.IncomeType,
|
|
&i.IncomeBank,
|
|
&i.Remark,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.CreatedUserID,
|
|
&i.UpdatedAt,
|
|
&i.UpdatedUserID,
|
|
)
|
|
return &i, err
|
|
}
|
|
|
|
const statisticsIncome = `-- name: StatisticsIncome :many
|
|
SELECT SUM(amount)::numeric as total_amount,
|
|
(select name from categories where id = incomes.income_type) income_type_name
|
|
FROM incomes
|
|
GROUP BY income_type
|
|
`
|
|
|
|
type StatisticsIncomeRow struct {
|
|
TotalAmount pgtype.Numeric `json:"total_amount"`
|
|
IncomeTypeName string `json:"income_type_name"`
|
|
}
|
|
|
|
func (q *Queries) StatisticsIncome(ctx context.Context) ([]*StatisticsIncomeRow, error) {
|
|
rows, err := q.db.Query(ctx, statisticsIncome)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
items := []*StatisticsIncomeRow{}
|
|
for rows.Next() {
|
|
var i StatisticsIncomeRow
|
|
if err := rows.Scan(&i.TotalAmount, &i.IncomeTypeName); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, &i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const statisticsIncomeByProjectID = `-- name: StatisticsIncomeByProjectID :many
|
|
SELECT SUM(amount)::numeric as total_amount,
|
|
(select name from categories where id = incomes.income_type) income_type_name
|
|
FROM incomes
|
|
WHERE project_id = $1
|
|
GROUP BY income_type
|
|
`
|
|
|
|
type StatisticsIncomeByProjectIDRow struct {
|
|
TotalAmount pgtype.Numeric `json:"total_amount"`
|
|
IncomeTypeName string `json:"income_type_name"`
|
|
}
|
|
|
|
func (q *Queries) StatisticsIncomeByProjectID(ctx context.Context, projectID int64) ([]*StatisticsIncomeByProjectIDRow, error) {
|
|
rows, err := q.db.Query(ctx, statisticsIncomeByProjectID, projectID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
items := []*StatisticsIncomeByProjectIDRow{}
|
|
for rows.Next() {
|
|
var i StatisticsIncomeByProjectIDRow
|
|
if err := rows.Scan(&i.TotalAmount, &i.IncomeTypeName); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, &i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const sumIncome = `-- name: SumIncome :one
|
|
SELECT SUM(amount)::numeric
|
|
FROM incomes
|
|
`
|
|
|
|
func (q *Queries) SumIncome(ctx context.Context) (pgtype.Numeric, error) {
|
|
row := q.db.QueryRow(ctx, sumIncome)
|
|
var column_1 pgtype.Numeric
|
|
err := row.Scan(&column_1)
|
|
return column_1, err
|
|
}
|
|
|
|
const sumIncomeByProjectID = `-- name: SumIncomeByProjectID :one
|
|
SELECT SUM(amount)::numeric
|
|
FROM incomes
|
|
WHERE project_id = $1
|
|
`
|
|
|
|
func (q *Queries) SumIncomeByProjectID(ctx context.Context, projectID int64) (pgtype.Numeric, error) {
|
|
row := q.db.QueryRow(ctx, sumIncomeByProjectID, projectID)
|
|
var column_1 pgtype.Numeric
|
|
err := row.Scan(&column_1)
|
|
return column_1, err
|
|
}
|
|
|
|
const updateIncome = `-- name: UpdateIncome :one
|
|
UPDATE incomes
|
|
SET
|
|
project_id = COALESCE($2, project_id),
|
|
budget_id = COALESCE($3, budget_id),
|
|
amount = COALESCE($4, amount),
|
|
income_at = COALESCE($5, income_at),
|
|
income_type = COALESCE($6, income_type),
|
|
income_bank = COALESCE($7, income_bank),
|
|
remark = COALESCE($8, remark),
|
|
status = COALESCE($9, status),
|
|
updated_user_id = COALESCE($10, updated_user_id),
|
|
updated_at = NOW()
|
|
WHERE id = $1
|
|
RETURNING id, project_id, budget_id, amount, income_at, income_type, income_bank, remark, status, created_at, created_user_id, updated_at, updated_user_id
|
|
`
|
|
|
|
type UpdateIncomeParams struct {
|
|
ID int64 `json:"id"`
|
|
ProjectID pgtype.Int8 `json:"project_id"`
|
|
BudgetID pgtype.Int8 `json:"budget_id"`
|
|
Amount pgtype.Numeric `json:"amount"`
|
|
IncomeAt pgtype.Timestamptz `json:"income_at"`
|
|
IncomeType pgtype.Int4 `json:"income_type"`
|
|
IncomeBank pgtype.Int4 `json:"income_bank"`
|
|
Remark pgtype.Text `json:"remark"`
|
|
Status pgtype.Int2 `json:"status"`
|
|
UpdatedUserID pgtype.Int4 `json:"updated_user_id"`
|
|
}
|
|
|
|
func (q *Queries) UpdateIncome(ctx context.Context, arg *UpdateIncomeParams) (*Income, error) {
|
|
row := q.db.QueryRow(ctx, updateIncome,
|
|
arg.ID,
|
|
arg.ProjectID,
|
|
arg.BudgetID,
|
|
arg.Amount,
|
|
arg.IncomeAt,
|
|
arg.IncomeType,
|
|
arg.IncomeBank,
|
|
arg.Remark,
|
|
arg.Status,
|
|
arg.UpdatedUserID,
|
|
)
|
|
var i Income
|
|
err := row.Scan(
|
|
&i.ID,
|
|
&i.ProjectID,
|
|
&i.BudgetID,
|
|
&i.Amount,
|
|
&i.IncomeAt,
|
|
&i.IncomeType,
|
|
&i.IncomeBank,
|
|
&i.Remark,
|
|
&i.Status,
|
|
&i.CreatedAt,
|
|
&i.CreatedUserID,
|
|
&i.UpdatedAt,
|
|
&i.UpdatedUserID,
|
|
)
|
|
return &i, err
|
|
}
|