github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/sqx/dm/dm.go (about) 1 package dm 2 3 import ( 4 "errors" 5 "io" 6 "reflect" 7 8 "gitee.com/chunanyong/dm" 9 "github.com/bingoohuang/gg/pkg/sqx" 10 ) 11 12 func ConvertDmClob(value interface{}) (interface{}, error) { 13 clob, ok := value.(*dm.DmClob) 14 if !ok { 15 return value, errors.New("conversion to *dm.DmClob type failed") 16 } 17 18 length, err := clob.GetLength() 19 if err != nil { 20 return clob, err 21 } 22 23 if length == 0 { 24 return "", nil 25 } 26 27 s, err := clob.ReadString(1, int(length)) 28 if err != nil && errors.Is(err, io.EOF) { 29 return "", nil 30 } 31 return s, err 32 } 33 34 func init() { 35 sqx.CustomDriverValueConverters[reflect.TypeOf((*dm.DmClob)(nil))] = sqx.CustomDriverValueConvertFn(ConvertDmClob) 36 }