diff --git a/converter/json.go b/converter/json.go index 6f4f682..0d97346 100644 --- a/converter/json.go +++ b/converter/json.go @@ -80,3 +80,24 @@ func (v *NullJSONString) UnmarshalJSON(data []byte) error { } return nil } + +func ConvertJSONNullString(value string) reflect.Value { + v := NullJSONString{} + if err := v.Scan(value); err != nil { + return reflect.Value{} + } + + return reflect.ValueOf(v) +} + +func ConvertJSONNullBool(value string) reflect.Value { + v := NullJSONBool{} + + if value == "on" || value == "off" { + return reflect.ValueOf(NullJSONBool{sql.NullBool{Bool: value == "on", Valid: true}}) + } + if err := v.Scan(value); err != nil { + return reflect.Value{} + } + return reflect.ValueOf(v) +} diff --git a/converter/sql.go b/converter/sql.go index 1992a81..5075106 100644 --- a/converter/sql.go +++ b/converter/sql.go @@ -40,3 +40,39 @@ func SQLNullFloat64(value string) reflect.Value { return reflect.ValueOf(v) } + +func ConvertSQLNullString(value string) reflect.Value { + v := sql.NullString{} + if err := v.Scan(value); err != nil { + return reflect.Value{} + } + + return reflect.ValueOf(v) +} + +func ConvertSQLNullBool(value string) reflect.Value { + v := sql.NullBool{} + if err := v.Scan(value); err != nil { + return reflect.Value{} + } + + return reflect.ValueOf(v) +} + +func ConvertSQLNullInt64(value string) reflect.Value { + v := sql.NullInt64{} + if err := v.Scan(value); err != nil { + return reflect.Value{} + } + + return reflect.ValueOf(v) +} + +func ConvertSQLNullFloat64(value string) reflect.Value { + v := sql.NullFloat64{} + if err := v.Scan(value); err != nil { + return reflect.Value{} + } + + return reflect.ValueOf(v) +}