Files
releases/vendor/github.com/huandu/go-sqlbuilder/fieldmapper.go
T
Stephan Renatus 4ab2ac0c61 Port Compile API extensions from EOPA (#7887)
* server: port compile API

Also adds e2e tests: These include coverage for ucast in the prisma
setting, and thus require some JS runtime.

* e2e: selectively skip e2e Compile API tests

...for macos runs, and for the go-compat suites.

* server: accept timer_rego_external_resolve_ns metrics with value 0

When running the tests in a loop for a while, I would see values of 0ns
for this metric. However, comparing with its non-zero values, which are
often 41 or 42ns, it seems like this is just not happening in this code
path. So if "almost nothing" actually goes below 1ns, it's OK.

* e2e: split dep-heavy e2e tests into their own go module
* Makefile: export DOCKER_RUNNING (make e2e read it)

---------

Co-authored-by: Philip Conrad <philip@chariot-chaser.net>
Signed-off-by: Stephan Renatus <stephan.renatus@gmail.com>
2025-09-22 12:11:06 +02:00

47 lines
1.5 KiB
Go

package sqlbuilder
import (
"reflect"
"github.com/huandu/xstrings"
)
var (
// DefaultFieldMapper is the default field name to table column name mapper func.
// It's nil by default which means field name will be kept as it is.
//
// If a Struct has its own mapper func, the DefaultFieldMapper is ignored in this Struct.
// Field tag has precedence over all kinds of field mapper functions.
//
// Field mapper is called only once on a Struct when the Struct is used to create builder for the first time.
DefaultFieldMapper FieldMapperFunc
// DefaultGetAlias is the default alias and dbtag get func
DefaultGetAlias GetAliasFunc
)
func init() {
DefaultGetAlias = func(field *reflect.StructField) (alias string, dbtag string) {
dbtag = field.Tag.Get(DBTag)
alias = dbtag
return
}
}
// FieldMapperFunc is a func to map struct field names to column names,
// which will be used in query as columns.
type FieldMapperFunc func(name string) string
// SnakeCaseMapper is a field mapper which can convert field name from CamelCase to snake_case.
//
// For instance, it will convert "MyField" to "my_field".
//
// SnakeCaseMapper uses package "xstrings" to do the conversion.
// See https://pkg.go.dev/github.com/huandu/xstrings#ToSnakeCase for conversion rules.
func SnakeCaseMapper(field string) string {
return xstrings.ToSnakeCase(field)
}
// GetAliasFunc is a func to get alias and dbtag
type GetAliasFunc func(field *reflect.StructField) (alias string, dbtag string)