This commit is contained in:
oneao committed 2026-03-04 17:30:05 +08:00
1 parent 46106d0c76
commit 34240d2e16
36 files changed
+2853 -165

No files matched your search

@@ -1,3 +1,26 @@
-- name: BatchInsertFinanceCategorySpace :copyfrom
INSERT INTO finance_category_space (id, space_id, name, icon, type, sort_number,create_by,update_by)
VALUES ($1, $2, $3, $4, $5, $6,$7,$8);
VALUES ($1, $2, $3, $4, $5, $6,$7,$8);
-- name: ListFinanceCategories :many
SELECT * FROM finance_category_space WHERE space_id = $1;
-- name: GetFinanceCategoryByName :one
SELECT * FROM finance_category_space WHERE space_id = $1 AND name = $2 AND type = $3;
-- name: InsertFinanceCategory :exec
INSERT INTO finance_category_space(id,space_id,name,icon,type,sort_number,create_by,update_by,create_time,update_time)
values ($1,$2,$3,$4,$5,$6,$7,$8,NOW(),NOW());
-- name: BatchUpdateFinanceCategorySortNumber :batchexec
UPDATE finance_category_space
SET sort_number = $1,update_by = $2,update_time = NOW()
WHERE id = $3;
-- name: DeleteFinanceCategory :exec
DELETE FROM finance_category_space WHERE id = $1;
-- name: UpdateFinanceCategory :exec
UPDATE finance_category_space
SET name = $1,icon = $2,update_by = $3,update_time = NOW()
WHERE id = $4;
@@ -0,0 +1,40 @@
-- name: ListFinanceRecords :many
SELECT
fr.*,
su.member_name
FROM finance_record fr
LEFT JOIN space_member su
ON fr.space_id = su.space_id
AND fr.update_by = su.user_id
WHERE
fr.space_id = $1
AND fr.record_time >= $2
AND fr.record_time < $3
AND (
$4 = 0
OR fr.category_id = $4
)
ORDER BY
fr.record_time DESC,
fr.create_time DESC;
-- name: InsertFinanceRecord :exec
INSERT INTO finance_record(id,category_id,space_id,amount,record_time,remark,create_by,update_by,create_time,update_time)
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,NOW(),NOW());
-- name: UpdateFinanceRecord :exec
UPDATE finance_record
SET
category_id = $2,
amount = $3,
remark = $4,
record_time = $5,
update_by = $6,
update_time = NOW()
WHERE id = $1;
-- name: DeleteFinanceRecord :exec
DELETE FROM finance_record WHERE id = $1;
-- name: DeleteFinanceRecordByCategoryId :exec
DELETE FROM finance_record WHERE category_id = $1;
+53
View File
@@ -16,6 +16,59 @@ var (
ErrBatchAlreadyClosed = errors.New("batch already closed")
)
const batchUpdateFinanceCategorySortNumber = `-- name: BatchUpdateFinanceCategorySortNumber :batchexec
UPDATE finance_category_space
SET sort_number = $1,update_by = $2,update_time = NOW()
WHERE id = $3
`
type BatchUpdateFinanceCategorySortNumberBatchResults struct {
br pgx.BatchResults
tot int
closed bool
}
type BatchUpdateFinanceCategorySortNumberParams struct {
SortNumber int32
UpdateBy int64
ID int64
}
func (q *Queries) BatchUpdateFinanceCategorySortNumber(ctx context.Context, arg []BatchUpdateFinanceCategorySortNumberParams) *BatchUpdateFinanceCategorySortNumberBatchResults {
batch := &pgx.Batch{}
for _, a := range arg {
vals := []interface{}{
a.SortNumber,
a.UpdateBy,
a.ID,
}
batch.Queue(batchUpdateFinanceCategorySortNumber, vals...)
}
br := q.db.SendBatch(ctx, batch)
return &BatchUpdateFinanceCategorySortNumberBatchResults{br, len(arg), false}
}
func (b *BatchUpdateFinanceCategorySortNumberBatchResults) Exec(f func(int, error)) {
defer b.br.Close()
for t := 0; t < b.tot; t++ {
if b.closed {
if f != nil {
f(t, ErrBatchAlreadyClosed)
}
continue
}
_, err := b.br.Exec()
if f != nil {
f(t, err)
}
}
}
func (b *BatchUpdateFinanceCategorySortNumberBatchResults) Close() error {
b.closed = true
return b.br.Close()
}
const batchUpdateSpaceSortNumber = `-- name: BatchUpdateSpaceSortNumber :batchexec
UPDATE space_member
SET sort_number = $1
@@ -5,6 +5,10 @@
package repo
import (
"context"
)
type BatchInsertFinanceCategorySpaceParams struct {
ID int64
SpaceID int64
@@ -15,3 +19,128 @@ type BatchInsertFinanceCategorySpaceParams struct {
CreateBy int64
UpdateBy int64
}
const deleteFinanceCategory = `-- name: DeleteFinanceCategory :exec
DELETE FROM finance_category_space WHERE id = $1
`
func (q *Queries) DeleteFinanceCategory(ctx context.Context, id int64) error {
_, err := q.db.Exec(ctx, deleteFinanceCategory, id)
return err
}
const getFinanceCategoryByName = `-- name: GetFinanceCategoryByName :one
SELECT id, space_id, name, icon, type, sort_number, create_by, create_time, update_by, update_time FROM finance_category_space WHERE space_id = $1 AND name = $2 AND type = $3
`
type GetFinanceCategoryByNameParams struct {
SpaceID int64
Name string
Type int16
}
func (q *Queries) GetFinanceCategoryByName(ctx context.Context, arg GetFinanceCategoryByNameParams) (FinanceCategorySpace, error) {
row := q.db.QueryRow(ctx, getFinanceCategoryByName, arg.SpaceID, arg.Name, arg.Type)
var i FinanceCategorySpace
err := row.Scan(
&i.ID,
&i.SpaceID,
&i.Name,
&i.Icon,
&i.Type,
&i.SortNumber,
&i.CreateBy,
&i.CreateTime,
&i.UpdateBy,
&i.UpdateTime,
)
return i, err
}
const insertFinanceCategory = `-- name: InsertFinanceCategory :exec
INSERT INTO finance_category_space(id,space_id,name,icon,type,sort_number,create_by,update_by,create_time,update_time)
values ($1,$2,$3,$4,$5,$6,$7,$8,NOW(),NOW())
`
type InsertFinanceCategoryParams struct {
ID int64
SpaceID int64
Name string
Icon string
Type int16
SortNumber int32
CreateBy int64
UpdateBy int64
}
func (q *Queries) InsertFinanceCategory(ctx context.Context, arg InsertFinanceCategoryParams) error {
_, err := q.db.Exec(ctx, insertFinanceCategory,
arg.ID,
arg.SpaceID,
arg.Name,
arg.Icon,
arg.Type,
arg.SortNumber,
arg.CreateBy,
arg.UpdateBy,
)
return err
}
const listFinanceCategories = `-- name: ListFinanceCategories :many
SELECT id, space_id, name, icon, type, sort_number, create_by, create_time, update_by, update_time FROM finance_category_space WHERE space_id = $1
`
func (q *Queries) ListFinanceCategories(ctx context.Context, spaceID int64) ([]FinanceCategorySpace, error) {
rows, err := q.db.Query(ctx, listFinanceCategories, spaceID)
if err != nil {
return nil, err
}
defer rows.Close()
var items []FinanceCategorySpace
for rows.Next() {
var i FinanceCategorySpace
if err := rows.Scan(
&i.ID,
&i.SpaceID,
&i.Name,
&i.Icon,
&i.Type,
&i.SortNumber,
&i.CreateBy,
&i.CreateTime,
&i.UpdateBy,
&i.UpdateTime,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateFinanceCategory = `-- name: UpdateFinanceCategory :exec
UPDATE finance_category_space
SET name = $1,icon = $2,update_by = $3,update_time = NOW()
WHERE id = $4
`
type UpdateFinanceCategoryParams struct {
Name string
Icon string
UpdateBy int64
ID int64
}
func (q *Queries) UpdateFinanceCategory(ctx context.Context, arg UpdateFinanceCategoryParams) error {
_, err := q.db.Exec(ctx, updateFinanceCategory,
arg.Name,
arg.Icon,
arg.UpdateBy,
arg.ID,
)
return err
}
@@ -0,0 +1,172 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.30.0
// source: finance_record.sql
package repo
import (
"context"
"github.com/jackc/pgx/v5/pgtype"
)
const deleteFinanceRecord = `-- name: DeleteFinanceRecord :exec
DELETE FROM finance_record WHERE id = $1
`
func (q *Queries) DeleteFinanceRecord(ctx context.Context, id int64) error {
_, err := q.db.Exec(ctx, deleteFinanceRecord, id)
return err
}
const deleteFinanceRecordByCategoryId = `-- name: DeleteFinanceRecordByCategoryId :exec
DELETE FROM finance_record WHERE category_id = $1
`
func (q *Queries) DeleteFinanceRecordByCategoryId(ctx context.Context, categoryID int64) error {
_, err := q.db.Exec(ctx, deleteFinanceRecordByCategoryId, categoryID)
return err
}
const insertFinanceRecord = `-- name: InsertFinanceRecord :exec
INSERT INTO finance_record(id,category_id,space_id,amount,record_time,remark,create_by,update_by,create_time,update_time)
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,NOW(),NOW())
`
type InsertFinanceRecordParams struct {
ID int64
CategoryID int64
SpaceID int64
Amount pgtype.Numeric
RecordTime pgtype.Date
Remark pgtype.Text
CreateBy int64
UpdateBy int64
}
func (q *Queries) InsertFinanceRecord(ctx context.Context, arg InsertFinanceRecordParams) error {
_, err := q.db.Exec(ctx, insertFinanceRecord,
arg.ID,
arg.CategoryID,
arg.SpaceID,
arg.Amount,
arg.RecordTime,
arg.Remark,
arg.CreateBy,
arg.UpdateBy,
)
return err
}
const listFinanceRecords = `-- name: ListFinanceRecords :many
SELECT
fr.id, fr.category_id, fr.space_id, fr.amount, fr.remark, fr.record_time, fr.create_by, fr.create_time, fr.update_by, fr.update_time,
su.member_name
FROM finance_record fr
LEFT JOIN space_member su
ON fr.space_id = su.space_id
AND fr.update_by = su.user_id
WHERE
fr.space_id = $1
AND fr.record_time >= $2
AND fr.record_time < $3
AND (
$4 = 0
OR fr.category_id = $4
)
ORDER BY
fr.record_time DESC,
fr.create_time DESC
`
type ListFinanceRecordsParams struct {
SpaceID int64
RecordTime pgtype.Date
RecordTime_2 pgtype.Date
Column4 interface{}
}
type ListFinanceRecordsRow struct {
ID int64
CategoryID int64
SpaceID int64
Amount pgtype.Numeric
Remark pgtype.Text
RecordTime pgtype.Date
CreateBy int64
CreateTime pgtype.Timestamptz
UpdateBy int64
UpdateTime pgtype.Timestamptz
MemberName pgtype.Text
}
func (q *Queries) ListFinanceRecords(ctx context.Context, arg ListFinanceRecordsParams) ([]ListFinanceRecordsRow, error) {
rows, err := q.db.Query(ctx, listFinanceRecords,
arg.SpaceID,
arg.RecordTime,
arg.RecordTime_2,
arg.Column4,
)
if err != nil {
return nil, err
}
defer rows.Close()
var items []ListFinanceRecordsRow
for rows.Next() {
var i ListFinanceRecordsRow
if err := rows.Scan(
&i.ID,
&i.CategoryID,
&i.SpaceID,
&i.Amount,
&i.Remark,
&i.RecordTime,
&i.CreateBy,
&i.CreateTime,
&i.UpdateBy,
&i.UpdateTime,
&i.MemberName,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateFinanceRecord = `-- name: UpdateFinanceRecord :exec
UPDATE finance_record
SET
category_id = $2,
amount = $3,
remark = $4,
record_time = $5,
update_by = $6,
update_time = NOW()
WHERE id = $1
`
type UpdateFinanceRecordParams struct {
ID int64
CategoryID int64
Amount pgtype.Numeric
Remark pgtype.Text
RecordTime pgtype.Date
UpdateBy int64
}
func (q *Queries) UpdateFinanceRecord(ctx context.Context, arg UpdateFinanceRecordParams) error {
_, err := q.db.Exec(ctx, updateFinanceRecord,
arg.ID,
arg.CategoryID,
arg.Amount,
arg.Remark,
arg.RecordTime,
arg.UpdateBy,
)
return err
}
+13
View File
@@ -31,6 +31,19 @@ type FinanceCategorySpace struct {
UpdateTime pgtype.Timestamptz
}
type FinanceRecord struct {
ID int64
CategoryID int64
SpaceID int64
Amount pgtype.Numeric
Remark pgtype.Text
RecordTime pgtype.Date
CreateBy int64
CreateTime pgtype.Timestamptz
UpdateBy int64
UpdateTime pgtype.Timestamptz
}
type Space struct {
ID int64
Name string
+17
View File
@@ -66,6 +66,7 @@ create table space_member
unique (space_id, user_id)
);
--记账分类默认表
create table finance_category_default
(
id bigint not null
@@ -78,6 +79,7 @@ create table finance_category_default
update_time timestamp with time zone default now()
);
--记账分类空间表
create table finance_category_space
(
id bigint not null
@@ -93,4 +95,19 @@ create table finance_category_space
update_time timestamp with time zone default now()
);
-- 记账记录表
create table finance_record
(
id bigint not null
primary key,
category_id bigint not null,
space_id bigint not null,
amount numeric(12, 2) not null,
remark varchar(255),
record_time date,
create_by bigint not null,
create_time timestamp with time zone default now(),
update_by bigint not null,
update_time timestamp with time zone default now()
);