223 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			223 lines
		
	
	
		
			5.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| // Code generated by sqlc. DO NOT EDIT.
 | |
| // versions:
 | |
| //   sqlc v1.28.0
 | |
| // source: budget.sql
 | |
| 
 | |
| package db
 | |
| 
 | |
| import (
 | |
| 	"context"
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/jackc/pgx/v5/pgtype"
 | |
| )
 | |
| 
 | |
| const createBudget = `-- name: CreateBudget :one
 | |
| INSERT INTO budgets (project_id, name, budget_type, category, start_at, end_at, amount, used_amount, remaining_amount, remark, created_user_id)
 | |
| VALUES($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11)
 | |
| RETURNING id, project_id, name, budget_type, category, start_at, end_at, amount, used_amount, remaining_amount, remark, status, sort, created_at, created_user_id, updated_at, updated_user_id
 | |
| `
 | |
| 
 | |
| type CreateBudgetParams struct {
 | |
| 	ProjectID       int64          `json:"project_id"`
 | |
| 	Name            string         `json:"name"`
 | |
| 	BudgetType      int32          `json:"budget_type"`
 | |
| 	Category        int32          `json:"category"`
 | |
| 	StartAt         time.Time      `json:"start_at"`
 | |
| 	EndAt           time.Time      `json:"end_at"`
 | |
| 	Amount          pgtype.Numeric `json:"amount"`
 | |
| 	UsedAmount      pgtype.Numeric `json:"used_amount"`
 | |
| 	RemainingAmount pgtype.Numeric `json:"remaining_amount"`
 | |
| 	Remark          string         `json:"remark"`
 | |
| 	CreatedUserID   int32          `json:"created_user_id"`
 | |
| }
 | |
| 
 | |
| func (q *Queries) CreateBudget(ctx context.Context, arg *CreateBudgetParams) (*Budget, error) {
 | |
| 	row := q.db.QueryRow(ctx, createBudget,
 | |
| 		arg.ProjectID,
 | |
| 		arg.Name,
 | |
| 		arg.BudgetType,
 | |
| 		arg.Category,
 | |
| 		arg.StartAt,
 | |
| 		arg.EndAt,
 | |
| 		arg.Amount,
 | |
| 		arg.UsedAmount,
 | |
| 		arg.RemainingAmount,
 | |
| 		arg.Remark,
 | |
| 		arg.CreatedUserID,
 | |
| 	)
 | |
| 	var i Budget
 | |
| 	err := row.Scan(
 | |
| 		&i.ID,
 | |
| 		&i.ProjectID,
 | |
| 		&i.Name,
 | |
| 		&i.BudgetType,
 | |
| 		&i.Category,
 | |
| 		&i.StartAt,
 | |
| 		&i.EndAt,
 | |
| 		&i.Amount,
 | |
| 		&i.UsedAmount,
 | |
| 		&i.RemainingAmount,
 | |
| 		&i.Remark,
 | |
| 		&i.Status,
 | |
| 		&i.Sort,
 | |
| 		&i.CreatedAt,
 | |
| 		&i.CreatedUserID,
 | |
| 		&i.UpdatedAt,
 | |
| 		&i.UpdatedUserID,
 | |
| 	)
 | |
| 	return &i, err
 | |
| }
 | |
| 
 | |
| const getBudget = `-- name: GetBudget :one
 | |
| SELECT id, project_id, name, budget_type, category, start_at, end_at, amount, used_amount, remaining_amount, remark, status, sort, created_at, created_user_id, updated_at, updated_user_id 
 | |
| FROM budgets 
 | |
| WHERE id = $1
 | |
| LIMIT 1
 | |
| `
 | |
| 
 | |
| func (q *Queries) GetBudget(ctx context.Context, id int64) (*Budget, error) {
 | |
| 	row := q.db.QueryRow(ctx, getBudget, id)
 | |
| 	var i Budget
 | |
| 	err := row.Scan(
 | |
| 		&i.ID,
 | |
| 		&i.ProjectID,
 | |
| 		&i.Name,
 | |
| 		&i.BudgetType,
 | |
| 		&i.Category,
 | |
| 		&i.StartAt,
 | |
| 		&i.EndAt,
 | |
| 		&i.Amount,
 | |
| 		&i.UsedAmount,
 | |
| 		&i.RemainingAmount,
 | |
| 		&i.Remark,
 | |
| 		&i.Status,
 | |
| 		&i.Sort,
 | |
| 		&i.CreatedAt,
 | |
| 		&i.CreatedUserID,
 | |
| 		&i.UpdatedAt,
 | |
| 		&i.UpdatedUserID,
 | |
| 	)
 | |
| 	return &i, err
 | |
| }
 | |
| 
 | |
| const listBudgets = `-- name: ListBudgets :many
 | |
| SELECT id, project_id, name, budget_type, category, start_at, end_at, amount, used_amount, remaining_amount, remark, status, sort, created_at, created_user_id, updated_at, updated_user_id 
 | |
| FROM budgets
 | |
| WHERE project_id = $1
 | |
| ORDER BY id
 | |
| `
 | |
| 
 | |
| func (q *Queries) ListBudgets(ctx context.Context, projectID int64) ([]*Budget, error) {
 | |
| 	rows, err := q.db.Query(ctx, listBudgets, projectID)
 | |
| 	if err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	defer rows.Close()
 | |
| 	items := []*Budget{}
 | |
| 	for rows.Next() {
 | |
| 		var i Budget
 | |
| 		if err := rows.Scan(
 | |
| 			&i.ID,
 | |
| 			&i.ProjectID,
 | |
| 			&i.Name,
 | |
| 			&i.BudgetType,
 | |
| 			&i.Category,
 | |
| 			&i.StartAt,
 | |
| 			&i.EndAt,
 | |
| 			&i.Amount,
 | |
| 			&i.UsedAmount,
 | |
| 			&i.RemainingAmount,
 | |
| 			&i.Remark,
 | |
| 			&i.Status,
 | |
| 			&i.Sort,
 | |
| 			&i.CreatedAt,
 | |
| 			&i.CreatedUserID,
 | |
| 			&i.UpdatedAt,
 | |
| 			&i.UpdatedUserID,
 | |
| 		); err != nil {
 | |
| 			return nil, err
 | |
| 		}
 | |
| 		items = append(items, &i)
 | |
| 	}
 | |
| 	if err := rows.Err(); err != nil {
 | |
| 		return nil, err
 | |
| 	}
 | |
| 	return items, nil
 | |
| }
 | |
| 
 | |
| const updateBudget = `-- name: UpdateBudget :one
 | |
| UPDATE budgets
 | |
| SET
 | |
|     project_id = COALESCE($2, project_id),
 | |
|     name = COALESCE($3, name),
 | |
|     budget_type = COALESCE($4, budget_type),
 | |
|     category = COALESCE($5, category),
 | |
|     start_at = COALESCE($6, start_at),
 | |
|     end_at = COALESCE($7, end_at),
 | |
|     amount = COALESCE($8, amount),
 | |
|     used_amount = COALESCE($9, used_amount),
 | |
|     remaining_amount = COALESCE($10, remaining_amount),
 | |
|     remark = COALESCE($11, remark),
 | |
|     status = COALESCE($12, status),
 | |
|     updated_user_id = COALESCE($13, updated_user_id),
 | |
|     updated_at = NOW()
 | |
| WHERE id = $1
 | |
| RETURNING id, project_id, name, budget_type, category, start_at, end_at, amount, used_amount, remaining_amount, remark, status, sort, created_at, created_user_id, updated_at, updated_user_id
 | |
| `
 | |
| 
 | |
| type UpdateBudgetParams struct {
 | |
| 	ID              int64              `json:"id"`
 | |
| 	ProjectID       pgtype.Int8        `json:"project_id"`
 | |
| 	Name            pgtype.Text        `json:"name"`
 | |
| 	BudgetType      pgtype.Int4        `json:"budget_type"`
 | |
| 	Category        pgtype.Int4        `json:"category"`
 | |
| 	StartAt         pgtype.Timestamptz `json:"start_at"`
 | |
| 	EndAt           pgtype.Timestamptz `json:"end_at"`
 | |
| 	Amount          pgtype.Numeric     `json:"amount"`
 | |
| 	UsedAmount      pgtype.Numeric     `json:"used_amount"`
 | |
| 	RemainingAmount pgtype.Numeric     `json:"remaining_amount"`
 | |
| 	Remark          pgtype.Text        `json:"remark"`
 | |
| 	Status          pgtype.Int2        `json:"status"`
 | |
| 	UpdatedUserID   pgtype.Int4        `json:"updated_user_id"`
 | |
| }
 | |
| 
 | |
| func (q *Queries) UpdateBudget(ctx context.Context, arg *UpdateBudgetParams) (*Budget, error) {
 | |
| 	row := q.db.QueryRow(ctx, updateBudget,
 | |
| 		arg.ID,
 | |
| 		arg.ProjectID,
 | |
| 		arg.Name,
 | |
| 		arg.BudgetType,
 | |
| 		arg.Category,
 | |
| 		arg.StartAt,
 | |
| 		arg.EndAt,
 | |
| 		arg.Amount,
 | |
| 		arg.UsedAmount,
 | |
| 		arg.RemainingAmount,
 | |
| 		arg.Remark,
 | |
| 		arg.Status,
 | |
| 		arg.UpdatedUserID,
 | |
| 	)
 | |
| 	var i Budget
 | |
| 	err := row.Scan(
 | |
| 		&i.ID,
 | |
| 		&i.ProjectID,
 | |
| 		&i.Name,
 | |
| 		&i.BudgetType,
 | |
| 		&i.Category,
 | |
| 		&i.StartAt,
 | |
| 		&i.EndAt,
 | |
| 		&i.Amount,
 | |
| 		&i.UsedAmount,
 | |
| 		&i.RemainingAmount,
 | |
| 		&i.Remark,
 | |
| 		&i.Status,
 | |
| 		&i.Sort,
 | |
| 		&i.CreatedAt,
 | |
| 		&i.CreatedUserID,
 | |
| 		&i.UpdatedAt,
 | |
| 		&i.UpdatedUserID,
 | |
| 	)
 | |
| 	return &i, err
 | |
| }
 |