Compare commits

...

2 Commits

Author SHA1 Message Date
fff609db4a v0.0.39 2022-12-21 14:39:59 +01:00
5e99e07f40 v0.0.38 2022-12-21 13:00:39 +01:00
4 changed files with 45 additions and 6 deletions

39
langext/sort.go Normal file
View File

@@ -0,0 +1,39 @@
package langext
import "sort"
func Sort[T OrderedConstraint](arr []T) {
sort.Slice(arr, func(i1, i2 int) bool {
return arr[i1] < arr[i2]
})
}
func SortStable[T OrderedConstraint](arr []T) {
sort.SliceStable(arr, func(i1, i2 int) bool {
return arr[i1] < arr[i2]
})
}
func IsSorted[T OrderedConstraint](arr []T) bool {
return sort.SliceIsSorted(arr, func(i1, i2 int) bool {
return arr[i1] < arr[i2]
})
}
func SortSlice[T any](arr []T, less func(v1, v2 T) bool) {
sort.Slice(arr, func(i1, i2 int) bool {
return less(arr[i1], arr[i2])
})
}
func SortSliceStable[T any](arr []T, less func(v1, v2 T) bool) {
sort.SliceStable(arr, func(i1, i2 int) bool {
return less(arr[i1], arr[i2])
})
}
func IsSliceSorted[T any](arr []T, less func(v1, v2 T) bool) bool {
return sort.SliceIsSorted(arr, func(i1, i2 int) bool {
return less(arr[i1], arr[i2])
})
}

View File

@@ -36,7 +36,7 @@ func (db *database) SetListener(listener Listener) {
func (db *database) Exec(ctx context.Context, sql string, prep PP) (sql.Result, error) { func (db *database) Exec(ctx context.Context, sql string, prep PP) (sql.Result, error) {
if db.lstr != nil { if db.lstr != nil {
db.lstr.OnExec(nil, sql, &prep) db.lstr.OnExec(nil, &sql, &prep)
} }
res, err := db.db.NamedExecContext(ctx, sql, prep) res, err := db.db.NamedExecContext(ctx, sql, prep)
@@ -48,7 +48,7 @@ func (db *database) Exec(ctx context.Context, sql string, prep PP) (sql.Result,
func (db *database) Query(ctx context.Context, sql string, prep PP) (*sqlx.Rows, error) { func (db *database) Query(ctx context.Context, sql string, prep PP) (*sqlx.Rows, error) {
if db.lstr != nil { if db.lstr != nil {
db.lstr.OnQuery(nil, sql, &prep) db.lstr.OnQuery(nil, &sql, &prep)
} }
rows, err := db.db.NamedQueryContext(ctx, sql, prep) rows, err := db.db.NamedQueryContext(ctx, sql, prep)

View File

@@ -1,8 +1,8 @@
package sq package sq
type Listener interface { type Listener interface {
OnQuery(txID *uint16, sql string, params *PP) OnQuery(txID *uint16, sql *string, params *PP)
OnExec(txID *uint16, sql string, params *PP) OnExec(txID *uint16, sql *string, params *PP)
OnPing() OnPing()
OnTxBegin(txid uint16) OnTxBegin(txid uint16)
OnTxCommit(txid uint16) OnTxCommit(txid uint16)

View File

@@ -46,7 +46,7 @@ func (tx *transaction) Commit() error {
func (tx *transaction) Exec(ctx context.Context, sql string, prep PP) (sql.Result, error) { func (tx *transaction) Exec(ctx context.Context, sql string, prep PP) (sql.Result, error) {
if tx.lstr != nil { if tx.lstr != nil {
tx.lstr.OnExec(langext.Ptr(tx.id), sql, &prep) tx.lstr.OnExec(langext.Ptr(tx.id), &sql, &prep)
} }
res, err := tx.tx.NamedExecContext(ctx, sql, prep) res, err := tx.tx.NamedExecContext(ctx, sql, prep)
@@ -58,7 +58,7 @@ func (tx *transaction) Exec(ctx context.Context, sql string, prep PP) (sql.Resul
func (tx *transaction) Query(ctx context.Context, sql string, prep PP) (*sqlx.Rows, error) { func (tx *transaction) Query(ctx context.Context, sql string, prep PP) (*sqlx.Rows, error) {
if tx.lstr != nil { if tx.lstr != nil {
tx.lstr.OnQuery(langext.Ptr(tx.id), sql, &prep) tx.lstr.OnQuery(langext.Ptr(tx.id), &sql, &prep)
} }
rows, err := sqlx.NamedQueryContext(ctx, tx.tx, sql, prep) rows, err := sqlx.NamedQueryContext(ctx, tx.tx, sql, prep)