7e30272020
ExprPtrs dereferences []*T values, skips nil entries, and maps survivors through a converter. Co-authored-by: Cursor <cursoragent@cursor.com>
56 lines
1.5 KiB
Go
56 lines
1.5 KiB
Go
package dbx
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/go-jet/jet/v2/mysql"
|
|
)
|
|
|
|
// ExprValues converts a list of values to a list of Expression values using
|
|
// function f to transform the values (mysql.String for strings, mysql.Uint64, etc).
|
|
func ExprValues[T any](values []T, f func(T) Expression) []Expression {
|
|
expressions := make([]Expression, len(values))
|
|
for i, v := range values {
|
|
expressions[i] = f(v)
|
|
}
|
|
return expressions
|
|
}
|
|
|
|
// ExprPtrs converts a list of pointers to Expression values, skipping nil
|
|
// entries. Function f receives the dereferenced value.
|
|
func ExprPtrs[T any](values []*T, f func(T) Expression) []Expression {
|
|
expressions := make([]Expression, 0, len(values))
|
|
for _, v := range values {
|
|
if v == nil {
|
|
continue
|
|
}
|
|
expressions = append(expressions, f(*v))
|
|
}
|
|
return expressions
|
|
}
|
|
|
|
// ExprStringers converts a list of fmt.Stringers to a list of Expression values.
|
|
func ExprStringers(values []fmt.Stringer) []Expression {
|
|
expressions := make([]Expression, len(values))
|
|
for i, v := range values {
|
|
expressions[i] = mysql.String(v.String())
|
|
}
|
|
return expressions
|
|
}
|
|
|
|
// StringKSUIDExpr returns a Jet expression for a string-encoded KSUID column.
|
|
func StringKSUIDExpr(id StringKSUID) Expression {
|
|
if id.IsNil() {
|
|
return mysql.StringExp(mysql.NULL)
|
|
}
|
|
return mysql.String(id.String())
|
|
}
|
|
|
|
// BinaryKSUIDExpr returns a Jet expression for a binary-encoded KSUID column.
|
|
func BinaryKSUIDExpr(id BinaryKSUID) Expression {
|
|
if id.IsNil() {
|
|
return mysql.StringExp(mysql.NULL)
|
|
}
|
|
return mysql.String(string(id.Bytes()))
|
|
}
|