Files
workspace/code/allapp/allapp-go/db/repo/batch.go
T
2026-03-02 17:29:51 +08:00

73 lines
1.4 KiB
Go

// 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()
}