v0.0.387 bf
All checks were successful
Build Docker and Deploy / Run goext test-suite (push) Successful in 3m24s

This commit is contained in:
2024-02-12 18:17:49 +01:00
parent 3c439ba428
commit 7fedfbca81
4 changed files with 23 additions and 5 deletions

View File

@@ -44,7 +44,7 @@ func InsertAndQuerySingle[TData any](ctx context.Context, q Queryable, tableName
rval := reflect.ValueOf(v)
idRVal := rval.FieldByName(idColumn)
idRVal := fieldByTag(rval, "db", idColumn)
if !idRVal.IsValid() || idRVal.IsZero() {
return *new(TData), fmt.Errorf("failed to find idColumn '%s' in %T", idColumn, v)
}
@@ -67,6 +67,22 @@ func InsertAndQuerySingle[TData any](ctx context.Context, q Queryable, tableName
return QuerySingle[TData](ctx, q, sqlstr, pp, mode, sec)
}
func fieldByTag(rval reflect.Value, tagkey string, tagval string) reflect.Value {
rtyp := rval.Type()
for i := 0; i < rtyp.NumField(); i++ {
rsfield := rtyp.Field(i)
if !rsfield.IsExported() {
continue
}
if rsfield.Tag.Get(tagkey) == tagval {
return rval.Field(i)
}
}
panic(fmt.Sprintf("tag %s = '%s' not found in %s", tagkey, tagval, rtyp.Name()))
}
func InsertMultiple[TData any](ctx context.Context, q Queryable, tableName string, vArr []TData, maxBatch int) ([]sql.Result, error) {
if len(vArr) == 0 {
@@ -122,7 +138,7 @@ func UpdateAndQuerySingle[TData any](ctx context.Context, q Queryable, tableName
rval := reflect.ValueOf(v)
idRVal := rval.FieldByName(idColumn)
idRVal := fieldByTag(rval, "db", idColumn)
if !idRVal.IsValid() || idRVal.IsZero() {
return *new(TData), fmt.Errorf("failed to find idColumn '%s' in %T", idColumn, v)
}