updated dependencies and go
This commit is contained in:
+5
-5
@@ -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")
|
||||
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user