projectx/internal/db/sqlc/income.sql.go
2025-03-31 11:59:42 +08:00

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
}