package db /* import ( "database/sql" "github.com/jmoiron/sqlx" "gitlink.org.cn/cloudream/common/utils/math2" ) const ( maxPlaceholderCount = 65535 ) func BatchNamedExec[T any](ctx SQLContext, sql string, argCnt int, arr []T, callback func(sql.Result) bool) error { if argCnt == 0 { ret, err := ctx.NamedExec(sql, arr) if err != nil { return err } if callback != nil { callback(ret) } return nil } batchSize := maxPlaceholderCount / argCnt for len(arr) > 0 { curBatchSize := math2.Min(batchSize, len(arr)) ret, err := ctx.NamedExec(sql, arr[:curBatchSize]) if err != nil { return err } if callback != nil && !callback(ret) { return nil } arr = arr[curBatchSize:] } return nil } func BatchNamedQuery[T any](ctx SQLContext, sql string, argCnt int, arr []T, callback func(*sqlx.Rows) bool) error { if argCnt == 0 { ret, err := ctx.NamedQuery(sql, arr) if err != nil { return err } if callback != nil { callback(ret) } return nil } batchSize := maxPlaceholderCount / argCnt for len(arr) > 0 { curBatchSize := math2.Min(batchSize, len(arr)) ret, err := ctx.NamedQuery(sql, arr[:curBatchSize]) if err != nil { return err } if callback != nil && !callback(ret) { return nil } arr = arr[curBatchSize:] } return nil } */