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
 | |
| }
 |