updated dependencies and go

This commit is contained in:
2026-04-21 11:06:01 +02:00
parent f62e7499ec
commit 84b87d61f2
91 changed files with 551 additions and 637 deletions
+5 -5
View File
@@ -43,7 +43,7 @@ func BuildUpdateStatement[TData any](q Queryable, tableName string, obj TData, i
continue
}
if rsfield.Type.Kind() == reflect.Ptr && rvfield.IsNil() {
if rsfield.Type.Kind() == reflect.Pointer && rvfield.IsNil() {
setClauses = append(setClauses, fmt.Sprintf("%s = NULL", columnName))
@@ -94,7 +94,7 @@ func BuildInsertStatement[TData any](q Queryable, tableName string, obj TData) (
continue
}
if rsfield.Type.Kind() == reflect.Ptr && rvfield.IsNil() {
if rsfield.Type.Kind() == reflect.Pointer && rvfield.IsNil() {
fields = append(fields, columnName)
values = append(values, "NULL")
@@ -132,8 +132,8 @@ func BuildInsertMultipleStatement[TData any](q Queryable, tableName string, vArr
{
columns := make([]string, 0)
for i := 0; i < rtyp.NumField(); i++ {
rsfield := rtyp.Field(i)
for rsfield := range rtyp.Fields() {
rsfield := rsfield
if !rsfield.IsExported() {
continue
@@ -174,7 +174,7 @@ func BuildInsertMultipleStatement[TData any](q Queryable, tableName string, vArr
continue
}
if rsfield.Type.Kind() == reflect.Ptr && rvfield.IsNil() {
if rsfield.Type.Kind() == reflect.Pointer && rvfield.IsNil() {
params = append(params, "NULL")
+1 -1
View File
@@ -11,7 +11,7 @@ func fnTrimComments(ctx context.Context, cmdtype string, id *uint16, sql *string
res := make([]string, 0)
for _, s := range strings.Split(*sql, "\n") {
for s := range strings.SplitSeq(*sql, "\n") {
if strings.HasPrefix(strings.TrimSpace(s), "--") {
continue
}
+1 -1
View File
@@ -79,7 +79,7 @@ func convertValueToDB(q Queryable, value any) (any, error) {
}
}
if value != nil && reflect.TypeOf(value).Kind() == reflect.Ptr {
if value != nil && reflect.TypeOf(value).Kind() == reflect.Pointer {
vof := reflect.ValueOf(value)
if vof.IsNil() {
return nil, nil
+8 -8
View File
@@ -6,8 +6,8 @@ import (
"encoding/hex"
"encoding/json"
"fmt"
"github.com/jmoiron/sqlx"
"git.blackforestbytes.com/BlackForestBytes/goext/langext"
"github.com/jmoiron/sqlx"
"os"
"path/filepath"
"strings"
@@ -186,14 +186,14 @@ func CreateSqliteDatabaseSchemaString(ctx context.Context, db Queryable) (string
result = append(result, tableList[i])
}
strBuilderResult := ""
var strBuilderResult strings.Builder
for _, vTab := range result {
jbinTable, err := json.Marshal(vTab)
if err != nil {
return "", err
}
strBuilderResult += fmt.Sprintf("#TABLE: %s\n{\n", string(jbinTable))
strBuilderResult.WriteString(fmt.Sprintf("#TABLE: %s\n{\n", string(jbinTable)))
for _, vCol := range vTab.ColumnInfo {
jbinColumn, err := json.Marshal(vCol)
@@ -201,7 +201,7 @@ func CreateSqliteDatabaseSchemaString(ctx context.Context, db Queryable) (string
return "", err
}
strBuilderResult += fmt.Sprintf(" COLUMN: %s\n", string(jbinColumn))
strBuilderResult.WriteString(fmt.Sprintf(" COLUMN: %s\n", string(jbinColumn)))
}
for _, vIdx := range vTab.IndexInfo {
@@ -210,7 +210,7 @@ func CreateSqliteDatabaseSchemaString(ctx context.Context, db Queryable) (string
return "", err
}
strBuilderResult += fmt.Sprintf(" INDEX: %s\n", string(jbinIndex))
strBuilderResult.WriteString(fmt.Sprintf(" INDEX: %s\n", string(jbinIndex)))
}
for _, vFky := range vTab.FKeyInfo {
@@ -219,11 +219,11 @@ func CreateSqliteDatabaseSchemaString(ctx context.Context, db Queryable) (string
return "", err
}
strBuilderResult += fmt.Sprintf(" FKEY: %s\n", string(jbinFKey))
strBuilderResult.WriteString(fmt.Sprintf(" FKEY: %s\n", string(jbinFKey)))
}
strBuilderResult += "}\n\n"
strBuilderResult.WriteString("}\n\n")
}
return strBuilderResult, nil
return strBuilderResult.String(), nil
}
+5 -3
View File
@@ -4,6 +4,7 @@ import (
"context"
"fmt"
"git.blackforestbytes.com/BlackForestBytes/goext/exerr"
"strings"
)
func Iterate[TData any](ctx context.Context, q Queryable, table string, filter PaginateFilter, scanMode StructScanMode, scanSec StructScanSafety, page int, limit *int, consumer func(ctx context.Context, v TData) error) (int, error) {
@@ -32,12 +33,13 @@ func Iterate[TData any](ctx context.Context, q Queryable, table string, filter P
filterCond, joinCond, joinTables := filter.SQL(prepParams)
selectCond := table + ".*"
var selectCond strings.Builder
selectCond.WriteString(table + ".*")
for _, v := range joinTables {
selectCond += ", " + v + ".*"
selectCond.WriteString(", " + v + ".*")
}
sqlQueryData := "SELECT " + selectCond + " FROM " + table + " " + joinCond + " WHERE ( " + filterCond + " ) " + sortCond + " " + pageCond
sqlQueryData := "SELECT " + selectCond.String() + " FROM " + table + " " + joinCond + " WHERE ( " + filterCond + " ) " + sortCond + " " + pageCond
rows, err := q.Query(ctx, sqlQueryData, prepParams)
if err != nil {
+5 -3
View File
@@ -6,6 +6,7 @@ import (
"git.blackforestbytes.com/BlackForestBytes/goext/exerr"
"git.blackforestbytes.com/BlackForestBytes/goext/langext"
pag "git.blackforestbytes.com/BlackForestBytes/goext/pagination"
"strings"
)
func Paginate[TData any](ctx context.Context, q Queryable, table string, filter PaginateFilter, scanMode StructScanMode, scanSec StructScanSafety, page int, limit *int) ([]TData, pag.Pagination, error) {
@@ -34,12 +35,13 @@ func Paginate[TData any](ctx context.Context, q Queryable, table string, filter
filterCond, joinCond, joinTables := filter.SQL(prepParams)
selectCond := table + ".*"
var selectCond strings.Builder
selectCond.WriteString(table + ".*")
for _, v := range joinTables {
selectCond += ", " + v + ".*"
selectCond.WriteString(", " + v + ".*")
}
sqlQueryData := "SELECT " + selectCond + " FROM " + table + " " + joinCond + " WHERE ( " + filterCond + " ) " + sortCond + " " + pageCond
sqlQueryData := "SELECT " + selectCond.String() + " FROM " + table + " " + joinCond + " WHERE ( " + filterCond + " ) " + sortCond + " " + pageCond
sqlQueryCount := "SELECT " + "COUNT(*)" + " FROM " + table + " " + joinCond + " WHERE ( " + filterCond + " ) "
rows, err := q.Query(ctx, sqlQueryData, prepParams)
+4 -6
View File
@@ -1,5 +1,7 @@
package sq
import "maps"
import "git.blackforestbytes.com/BlackForestBytes/goext/langext"
type PP map[string]any
@@ -7,9 +9,7 @@ type PP map[string]any
func Join(pps ...PP) PP {
r := PP{}
for _, add := range pps {
for k, v := range add {
r[k] = v
}
maps.Copy(r, add)
}
return r
}
@@ -21,9 +21,7 @@ func (pp *PP) Add(v any) string {
}
func (pp *PP) AddAll(other PP) {
for id, v := range other {
(*pp)[id] = v
}
maps.Copy((*pp), other)
}
func PPID() string {
+9 -9
View File
@@ -3,9 +3,9 @@ package sq
import (
"errors"
"fmt"
"git.blackforestbytes.com/BlackForestBytes/goext/langext"
"github.com/jmoiron/sqlx"
"github.com/jmoiron/sqlx/reflectx"
"git.blackforestbytes.com/BlackForestBytes/goext/langext"
"reflect"
"strings"
)
@@ -39,7 +39,7 @@ type ssConverter struct {
func (r *StructScanner) Start(dest any) error {
v := reflect.ValueOf(dest)
if v.Kind() != reflect.Ptr {
if v.Kind() != reflect.Pointer {
return errors.New("must pass a pointer, not a value, to StructScan destination")
}
@@ -54,7 +54,7 @@ func (r *StructScanner) Start(dest any) error {
if f, err := missingFields(r.fields); err != nil && !r.unsafe {
return fmt.Errorf("missing destination name %s in %T", columns[f], dest)
}
r.values = make([]interface{}, len(columns))
r.values = make([]any, len(columns))
r.converter = make([]ssConverter, len(columns))
return nil
@@ -66,7 +66,7 @@ func (r *StructScanner) Start(dest any) error {
func (r *StructScanner) StructScanExt(q Queryable, dest any) error {
v := reflect.ValueOf(dest)
if v.Kind() != reflect.Ptr {
if v.Kind() != reflect.Pointer {
return errors.New("must pass a pointer, not a value, to StructScan destination")
}
@@ -177,7 +177,7 @@ func (r *StructScanner) StructScanExt(q Queryable, dest any) error {
func (r *StructScanner) StructScanBase(dest any) error {
v := reflect.ValueOf(dest)
if v.Kind() != reflect.Ptr {
if v.Kind() != reflect.Pointer {
return errors.New("must pass a pointer, not a value, to StructScan destination")
}
@@ -196,7 +196,7 @@ func (r *StructScanner) StructScanBase(dest any) error {
}
// fieldsByTraversal forked from github.com/jmoiron/sqlx@v1.3.5/sqlx.go
func fieldsByTraversalExtended(q Queryable, v reflect.Value, traversals [][]int, values []interface{}, converter []ssConverter) error {
func fieldsByTraversalExtended(q Queryable, v reflect.Value, traversals [][]int, values []any, converter []ssConverter) error {
v = reflect.Indirect(v)
if v.Kind() != reflect.Struct {
return errors.New("argument not a struct")
@@ -204,7 +204,7 @@ func fieldsByTraversalExtended(q Queryable, v reflect.Value, traversals [][]int,
for i, traversal := range traversals {
if len(traversal) == 0 {
values[i] = new(interface{})
values[i] = new(any)
continue
}
f := reflectx.FieldByIndexes(v, traversal)
@@ -243,7 +243,7 @@ func fieldsByTraversalExtended(q Queryable, v reflect.Value, traversals [][]int,
}
// fieldsByTraversal forked from github.com/jmoiron/sqlx@v1.3.5/sqlx.go
func fieldsByTraversalBase(v reflect.Value, traversals [][]int, values []interface{}, ptrs bool) error {
func fieldsByTraversalBase(v reflect.Value, traversals [][]int, values []any, ptrs bool) error {
v = reflect.Indirect(v)
if v.Kind() != reflect.Struct {
return errors.New("argument not a struct")
@@ -251,7 +251,7 @@ func fieldsByTraversalBase(v reflect.Value, traversals [][]int, values []interfa
for i, traversal := range traversals {
if len(traversal) == 0 {
values[i] = new(interface{})
values[i] = new(any)
continue
}
f := reflectx.FieldByIndexes(v, traversal)
+5 -6
View File
@@ -3,9 +3,8 @@ package sq
import (
"context"
"database/sql"
"github.com/jmoiron/sqlx"
"git.blackforestbytes.com/BlackForestBytes/goext/exerr"
"git.blackforestbytes.com/BlackForestBytes/goext/langext"
"github.com/jmoiron/sqlx"
"time"
)
@@ -111,7 +110,7 @@ func (tx *transaction) Exec(ctx context.Context, sqlstr string, prep PP) (sql.Re
preMeta := PreExecMeta{Context: ctx, TransactionConstructorContext: tx.constructorContext}
for _, v := range tx.db.lstr {
err := v.PreExec(ctx, langext.Ptr(tx.id), &sqlstr, &prep, preMeta)
err := v.PreExec(ctx, new(tx.id), &sqlstr, &prep, preMeta)
if err != nil {
return nil, exerr.Wrap(err, "failed to call SQL pre-exec listener").Int("tx.id", int(tx.id)).Str("original_sql", origsql).Str("sql", sqlstr).Any("sql_params", prep).Build()
}
@@ -128,7 +127,7 @@ func (tx *transaction) Exec(ctx context.Context, sqlstr string, prep PP) (sql.Re
postMeta := PostExecMeta{Context: ctx, TransactionConstructorContext: tx.constructorContext, Init: t0, Start: t1, End: time.Now()}
for _, v := range tx.db.lstr {
v.PostExec(langext.Ptr(tx.id), origsql, sqlstr, prep, err, postMeta)
v.PostExec(new(tx.id), origsql, sqlstr, prep, err, postMeta)
}
if err != nil {
@@ -144,7 +143,7 @@ func (tx *transaction) Query(ctx context.Context, sqlstr string, prep PP) (*sqlx
preMeta := PreQueryMeta{Context: ctx, TransactionConstructorContext: tx.constructorContext}
for _, v := range tx.db.lstr {
err := v.PreQuery(ctx, langext.Ptr(tx.id), &sqlstr, &prep, preMeta)
err := v.PreQuery(ctx, new(tx.id), &sqlstr, &prep, preMeta)
if err != nil {
return nil, exerr.Wrap(err, "failed to call SQL pre-query listener").Int("tx.id", int(tx.id)).Str("original_sql", origsql).Str("sql", sqlstr).Any("sql_params", prep).Build()
}
@@ -161,7 +160,7 @@ func (tx *transaction) Query(ctx context.Context, sqlstr string, prep PP) (*sqlx
postMeta := PostQueryMeta{Context: ctx, TransactionConstructorContext: tx.constructorContext, Init: t0, Start: t1, End: time.Now()}
for _, v := range tx.db.lstr {
v.PostQuery(langext.Ptr(tx.id), origsql, sqlstr, prep, err, postMeta)
v.PostQuery(new(tx.id), origsql, sqlstr, prep, err, postMeta)
}
if err != nil {