This commit is contained in:
oneao committed 2026-03-02 17:29:51 +08:00
1 parent ab3eaed7ce
commit cf23acdabc
28 files changed
+1292 -486

No files matched your search

+72
View File
@@ -0,0 +1,72 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.30.0
// source: batch.go
package repo
import (
"context"
"errors"
"github.com/jackc/pgx/v5"
)
var (
ErrBatchAlreadyClosed = errors.New("batch already closed")
)
const batchUpdateSpaceSortNumber = `-- name: BatchUpdateSpaceSortNumber :batchexec
UPDATE space_member
SET sort_number = $1
WHERE user_id = $2
AND space_id = $3
`
type BatchUpdateSpaceSortNumberBatchResults struct {
br pgx.BatchResults
tot int
closed bool
}
type BatchUpdateSpaceSortNumberParams struct {
SortNumber int32
UserID int64
SpaceID int64
}
// 更新空间顺序
func (q *Queries) BatchUpdateSpaceSortNumber(ctx context.Context, arg []BatchUpdateSpaceSortNumberParams) *BatchUpdateSpaceSortNumberBatchResults {
batch := &pgx.Batch{}
for _, a := range arg {
vals := []interface{}{
a.SortNumber,
a.UserID,
a.SpaceID,
}
batch.Queue(batchUpdateSpaceSortNumber, vals...)
}
br := q.db.SendBatch(ctx, batch)
return &BatchUpdateSpaceSortNumberBatchResults{br, len(arg), false}
}
func (b *BatchUpdateSpaceSortNumberBatchResults) 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 *BatchUpdateSpaceSortNumberBatchResults) Close() error {
b.closed = true
return b.br.Close()
}
+1
View File
@@ -16,6 +16,7 @@ type DBTX interface {
Query(context.Context, string, ...interface{}) (pgx.Rows, error)
QueryRow(context.Context, string, ...interface{}) pgx.Row
CopyFrom(ctx context.Context, tableName pgx.Identifier, columnNames []string, rowSrc pgx.CopyFromSource) (int64, error)
SendBatch(context.Context, *pgx.Batch) pgx.BatchResults
}
func New(db DBTX) *Queries {
@@ -66,6 +66,61 @@ func (q *Queries) GetSpaceByInviteCode(ctx context.Context, inviteCode string) (
return i, err
}
const getSpaceByUserIdAndSpaceId = `-- name: GetSpaceByUserIdAndSpaceId :one
SELECT
s.id AS space_id,
s.owner_id,
s.name,
sm.role,
COALESCE(mc.member_count, 0) AS member_count,
sm.is_default,
sm.member_name,
sm.sort_number
FROM space s
JOIN space_member sm
ON s.id = sm.space_id
LEFT JOIN (
SELECT space_id, COUNT(*) AS member_count
FROM space_member
GROUP BY space_id
) mc
ON s.id = mc.space_id
WHERE sm.user_id = $1 AND s.id = $2
ORDER BY sm.is_default DESC, sm.sort_number ASC
`
type GetSpaceByUserIdAndSpaceIdParams struct {
UserID int64
ID int64
}
type GetSpaceByUserIdAndSpaceIdRow struct {
SpaceID int64
OwnerID int64
Name string
Role int16
MemberCount int64
IsDefault int16
MemberName string
SortNumber int32
}
func (q *Queries) GetSpaceByUserIdAndSpaceId(ctx context.Context, arg GetSpaceByUserIdAndSpaceIdParams) (GetSpaceByUserIdAndSpaceIdRow, error) {
row := q.db.QueryRow(ctx, getSpaceByUserIdAndSpaceId, arg.UserID, arg.ID)
var i GetSpaceByUserIdAndSpaceIdRow
err := row.Scan(
&i.SpaceID,
&i.OwnerID,
&i.Name,
&i.Role,
&i.MemberCount,
&i.IsDefault,
&i.MemberName,
&i.SortNumber,
)
return i, err
}
const insertSpace = `-- name: InsertSpace :exec
INSERT INTO space (
id,name,invite_code,owner_id,create_time,update_time
@@ -15,6 +15,7 @@ FROM space_member
WHERE user_id = $1
`
// 合计某个用户的空间数量
func (q *Queries) CountUserSpaces(ctx context.Context, userID int64) (int64, error) {
row := q.db.QueryRow(ctx, countUserSpaces, userID)
var count int64
@@ -57,6 +58,7 @@ type InsertSpaceMemberParams struct {
SortNumber int32
}
// 插入空间用户
func (q *Queries) InsertSpaceMember(ctx context.Context, arg InsertSpaceMemberParams) error {
_, err := q.db.Exec(ctx, insertSpaceMember,
arg.ID,
@@ -70,6 +72,25 @@ func (q *Queries) InsertSpaceMember(ctx context.Context, arg InsertSpaceMemberPa
return err
}
const updateOtherSpacesIsDefault = `-- name: UpdateOtherSpacesIsDefault :exec
UPDATE space_member
SET is_default = $1
WHERE user_id = $2
AND space_id != $3
`
type UpdateOtherSpacesIsDefaultParams struct {
IsDefault int16
UserID int64
SpaceID int64
}
// 将用户的其它空间更新为非默认
func (q *Queries) UpdateOtherSpacesIsDefault(ctx context.Context, arg UpdateOtherSpacesIsDefaultParams) error {
_, err := q.db.Exec(ctx, updateOtherSpacesIsDefault, arg.IsDefault, arg.UserID, arg.SpaceID)
return err
}
const updateSpaceIsDefault = `-- name: UpdateSpaceIsDefault :exec
UPDATE space_member SET is_default = $1
WHERE space_id = $2 AND user_id = $3
@@ -81,6 +102,7 @@ type UpdateSpaceIsDefaultParams struct {
UserID int64
}
// 更新空间是否为默认
func (q *Queries) UpdateSpaceIsDefault(ctx context.Context, arg UpdateSpaceIsDefaultParams) error {
_, err := q.db.Exec(ctx, updateSpaceIsDefault, arg.IsDefault, arg.SpaceID, arg.UserID)
return err
@@ -97,6 +119,7 @@ type UpdateSpaceMemberNameParams struct {
UserID int64
}
// 更新用户在空间内的名称
func (q *Queries) UpdateSpaceMemberName(ctx context.Context, arg UpdateSpaceMemberNameParams) error {
_, err := q.db.Exec(ctx, updateSpaceMemberName, arg.MemberName, arg.SpaceID, arg.UserID)
return err