This commit is contained in:
Lunny Xiao 2021-07-04 23:20:30 +08:00
parent 4f03689628
commit 05a5611e59
3 changed files with 2 additions and 73 deletions

View File

@ -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
View File

@ -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) {

View File

@ -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