forked from mirror/gorm
Fix []byte support
This commit is contained in:
parent
96368eb967
commit
07960fe661
|
@ -214,7 +214,7 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field {
|
|||
field.DataType = Time
|
||||
}
|
||||
case reflect.Array, reflect.Slice:
|
||||
if fieldValue.Type().Elem() == reflect.TypeOf(uint8(0)) {
|
||||
if reflect.Indirect(fieldValue).Type().Elem() == reflect.TypeOf(uint8(0)) {
|
||||
field.DataType = Bytes
|
||||
}
|
||||
}
|
||||
|
|
|
@ -160,6 +160,9 @@ func (stmt *Statement) AddVar(writer clause.Writer, vars ...interface{}) {
|
|||
case driver.Valuer:
|
||||
stmt.Vars = append(stmt.Vars, v)
|
||||
stmt.DB.Dialector.BindVarTo(writer, stmt, v)
|
||||
case []byte:
|
||||
stmt.Vars = append(stmt.Vars, v)
|
||||
stmt.DB.Dialector.BindVarTo(writer, stmt, v)
|
||||
case []interface{}:
|
||||
if len(v) > 0 {
|
||||
writer.WriteByte('(')
|
||||
|
|
|
@ -17,7 +17,7 @@ import (
|
|||
func TestScannerValuer(t *testing.T) {
|
||||
DB.Migrator().DropTable(&ScannerValuerStruct{})
|
||||
if err := DB.Migrator().AutoMigrate(&ScannerValuerStruct{}); err != nil {
|
||||
t.Errorf("no error should happen when migrate scanner, valuer struct")
|
||||
t.Fatalf("no error should happen when migrate scanner, valuer struct, got error %v", err)
|
||||
}
|
||||
|
||||
data := ScannerValuerStruct{
|
||||
|
@ -28,6 +28,7 @@ func TestScannerValuer(t *testing.T) {
|
|||
Height: sql.NullFloat64{Float64: 1.8888, Valid: true},
|
||||
Birthday: sql.NullTime{Time: time.Now(), Valid: true},
|
||||
Password: EncryptedData("pass1"),
|
||||
Bytes: []byte("byte"),
|
||||
Num: 18,
|
||||
Strings: StringsSlice{"a", "b", "c"},
|
||||
Structs: StructsSlice{
|
||||
|
@ -38,16 +39,16 @@ func TestScannerValuer(t *testing.T) {
|
|||
}
|
||||
|
||||
if err := DB.Create(&data).Error; err != nil {
|
||||
t.Errorf("No error should happened when create scanner valuer struct, but got %v", err)
|
||||
t.Fatalf("No error should happened when create scanner valuer struct, but got %v", err)
|
||||
}
|
||||
|
||||
var result ScannerValuerStruct
|
||||
|
||||
if err := DB.Find(&result).Error; err != nil {
|
||||
t.Errorf("no error should happen when query scanner, valuer struct, but got %v", err)
|
||||
t.Fatalf("no error should happen when query scanner, valuer struct, but got %v", err)
|
||||
}
|
||||
|
||||
AssertObjEqual(t, data, result, "Name", "Gender", "Age", "Male", "Height", "Birthday", "Password", "Num", "Strings", "Structs")
|
||||
AssertObjEqual(t, data, result, "Name", "Gender", "Age", "Male", "Height", "Birthday", "Password", "Bytes", "Num", "Strings", "Structs")
|
||||
}
|
||||
|
||||
func TestScannerValuerWithFirstOrCreate(t *testing.T) {
|
||||
|
@ -130,6 +131,7 @@ type ScannerValuerStruct struct {
|
|||
Height sql.NullFloat64
|
||||
Birthday sql.NullTime
|
||||
Password EncryptedData
|
||||
Bytes []byte
|
||||
Num Num
|
||||
Strings StringsSlice
|
||||
Structs StructsSlice
|
||||
|
|
Loading…
Reference in New Issue