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  }