github.com/wanlay/gorm-dm8@v1.0.5/schema/clob.go (about)

     1  package dmSchema
     2  
     3  import (
     4  	"database/sql/driver"
     5  	"errors"
     6  	"fmt"
     7  
     8  	"github.com/wanlay/gorm-dm8/dmr"
     9  )
    10  
    11  type Clob string
    12  
    13  func (clob Clob) Value() (driver.Value, error) {
    14  	if len(clob) == 0 {
    15  		return nil, nil
    16  	}
    17  	return string(clob), nil
    18  }
    19  
    20  func (clob *Clob) Scan(v interface{}) error {
    21  	switch v.(type) {
    22  	case *dmr.DmClob:
    23  		tmp := v.(*dmr.DmClob)
    24  		le, err := tmp.GetLength()
    25  		if err != nil {
    26  			return errors.New(fmt.Sprint("err:", err))
    27  		}
    28  
    29  		str, err := tmp.ReadString(1, int(le))
    30  		*clob = Clob(str)
    31  		break
    32  
    33  	default:
    34  		*clob = Clob(v.(string))
    35  	}
    36  	return nil
    37  }