openmeter / pkg /framework /entutils /valuescanner.go
Leon4gr45's picture
Upload folder using huggingface_hub (part 9)
fea99b3 verified
Raw
History Blame Contribute Delete
573 Bytes
package entutils
import (
"database/sql/driver"
"encoding/json"
"entgo.io/ent/dialect/sql"
"entgo.io/ent/schema/field"
)
func JSONStringValueScanner[T any]() field.ValueScannerFunc[T, *sql.NullString] {
return field.ValueScannerFunc[T, *sql.NullString]{
V: func(t T) (driver.Value, error) {
return json.Marshal(t)
},
S: func(ns *sql.NullString) (T, error) {
v := new(T)
if ns == nil || !ns.Valid {
return *v, nil
}
b := []byte(ns.String)
if err := json.Unmarshal(b, v); err != nil {
return *v, err
}
return *v, nil
},
}
}