merge
This commit is contained in:
parent
4f03689628
commit
05a5611e59
|
@ -62,52 +62,3 @@ func Interface2String(v interface{}) (string, error) {
|
||||||
return "", fmt.Errorf("convert assign string unsupported type: %#v", vv)
|
return "", fmt.Errorf("convert assign string unsupported type: %#v", vv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Interface2Interface(v interface{}) (interface{}, error) {
|
|
||||||
if v == nil {
|
|
||||||
return nil, nil
|
|
||||||
}
|
|
||||||
switch vv := v.(type) {
|
|
||||||
case *int64:
|
|
||||||
return *vv, nil
|
|
||||||
case *int8:
|
|
||||||
return *vv, nil
|
|
||||||
case *sql.NullString:
|
|
||||||
if vv.Valid {
|
|
||||||
return vv.String, nil
|
|
||||||
}
|
|
||||||
return "", nil
|
|
||||||
case *sql.RawBytes:
|
|
||||||
if len([]byte(*vv)) > 0 {
|
|
||||||
return []byte(*vv), nil
|
|
||||||
}
|
|
||||||
return nil, nil
|
|
||||||
case *sql.NullInt32:
|
|
||||||
if vv.Valid {
|
|
||||||
return vv.Int32, nil
|
|
||||||
}
|
|
||||||
return 0, nil
|
|
||||||
case *sql.NullInt64:
|
|
||||||
if vv.Valid {
|
|
||||||
return vv.Int64, nil
|
|
||||||
}
|
|
||||||
return 0, nil
|
|
||||||
case *sql.NullFloat64:
|
|
||||||
if vv.Valid {
|
|
||||||
return vv.Float64, nil
|
|
||||||
}
|
|
||||||
return 0, nil
|
|
||||||
case *sql.NullBool:
|
|
||||||
if vv.Valid {
|
|
||||||
return vv.Bool, nil
|
|
||||||
}
|
|
||||||
return nil, nil
|
|
||||||
case *sql.NullTime:
|
|
||||||
if vv.Valid {
|
|
||||||
return vv.Time.Format("2006-01-02 15:04:05"), nil
|
|
||||||
}
|
|
||||||
return "", nil
|
|
||||||
default:
|
|
||||||
return "", fmt.Errorf("convert assign string unsupported type: %#v", vv)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
22
scan.go
22
scan.go
|
@ -134,28 +134,6 @@ func genScanResults(driver dialects.Driver, types []*sql.ColumnType) ([]interfac
|
||||||
return scanResults, nil
|
return scanResults, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func row2mapStr(rows *core.Rows, types []*sql.ColumnType, fields []string) (map[string]string, error) {
|
|
||||||
var scanResults = make([]interface{}, len(fields))
|
|
||||||
for i := 0; i < len(fields); i++ {
|
|
||||||
var s sql.NullString
|
|
||||||
scanResults[i] = &s
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := engine.driver.Scan(&dialects.ScanContext{
|
|
||||||
DBLocation: engine.DatabaseTZ,
|
|
||||||
UserLocation: engine.TZLocation,
|
|
||||||
}, rows, types, scanResults...); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
result := make(map[string]string, len(fields))
|
|
||||||
for ii, key := range fields {
|
|
||||||
s := scanResults[ii].(*sql.NullString)
|
|
||||||
result[key] = s.String
|
|
||||||
}
|
|
||||||
return result, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func genScanResult(driver dialects.Driver, fieldValue reflect.Value, columnType *sql.ColumnType) (interface{}, error) {
|
func genScanResult(driver dialects.Driver, fieldValue reflect.Value, columnType *sql.ColumnType) (interface{}, error) {
|
||||||
fieldType := fieldValue.Type()
|
fieldType := fieldValue.Type()
|
||||||
if fieldValue.Type().Implements(scannerType) || fieldValue.Type().Implements(conversionType) {
|
if fieldValue.Type().Implements(scannerType) || fieldValue.Type().Implements(conversionType) {
|
||||||
|
|
|
@ -47,7 +47,7 @@ func (session *Session) rows2Strings(rows *core.Rows) (resultsSlice []map[string
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
for rows.Next() {
|
for rows.Next() {
|
||||||
result, err := row2mapStr(rows, types, fields)
|
result, err := session.engine.row2mapStr(rows, types, fields)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
@ -72,7 +72,7 @@ func (session *Session) rows2SliceString(rows *core.Rows) (resultsSlice [][]stri
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
resultsSlice = append(resultsSlice, result)
|
resultsSlice = append(resultsSlice, record)
|
||||||
}
|
}
|
||||||
|
|
||||||
return resultsSlice, nil
|
return resultsSlice, nil
|
||||||
|
|
Loading…
Reference in New Issue