time.Time, []byte type add alias support. (rebase master) (#4992)
* time.Time, []byte type add alias support * reformat
This commit is contained in:
		
							parent
							
								
									eae73624ad
								
							
						
					
					
						commit
						a0d6ff1fea
					
				| @ -346,7 +346,8 @@ func (schema *Schema) ParseField(fieldStruct reflect.StructField) *Field { | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if _, ok := field.TagSettings["EMBEDDED"]; ok || (fieldStruct.Anonymous && !isValuer && (field.Creatable || field.Updatable || field.Readable)) { | 	if _, ok := field.TagSettings["EMBEDDED"]; field.GORMDataType != Time && field.GORMDataType != Bytes && | ||||||
|  | 		(ok || (fieldStruct.Anonymous && !isValuer && (field.Creatable || field.Updatable || field.Readable))) { | ||||||
| 		kind := reflect.Indirect(fieldValue).Kind() | 		kind := reflect.Indirect(fieldValue).Kind() | ||||||
| 		switch kind { | 		switch kind { | ||||||
| 		case reflect.Struct: | 		case reflect.Struct: | ||||||
|  | |||||||
| @ -262,21 +262,24 @@ func TestParseFieldWithPermission(t *testing.T) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| type ( | type ( | ||||||
| 	ID        int64 | 	ID      int64 | ||||||
| 	INT       int | 	INT     int | ||||||
| 	INT8      int8 | 	INT8    int8 | ||||||
| 	INT16     int16 | 	INT16   int16 | ||||||
| 	INT32     int32 | 	INT32   int32 | ||||||
| 	INT64     int64 | 	INT64   int64 | ||||||
| 	UINT      uint | 	UINT    uint | ||||||
| 	UINT8     uint8 | 	UINT8   uint8 | ||||||
| 	UINT16    uint16 | 	UINT16  uint16 | ||||||
| 	UINT32    uint32 | 	UINT32  uint32 | ||||||
| 	UINT64    uint64 | 	UINT64  uint64 | ||||||
| 	FLOAT32   float32 | 	FLOAT32 float32 | ||||||
| 	FLOAT64   float64 | 	FLOAT64 float64 | ||||||
| 	BOOL      bool | 	BOOL    bool | ||||||
| 	STRING    string | 	STRING  string | ||||||
|  | 	TIME    time.Time | ||||||
|  | 	BYTES   []byte | ||||||
|  | 
 | ||||||
| 	TypeAlias struct { | 	TypeAlias struct { | ||||||
| 		ID | 		ID | ||||||
| 		INT     `gorm:"column:fint"` | 		INT     `gorm:"column:fint"` | ||||||
| @ -293,6 +296,8 @@ type ( | |||||||
| 		FLOAT64 `gorm:"column:ffloat64"` | 		FLOAT64 `gorm:"column:ffloat64"` | ||||||
| 		BOOL    `gorm:"column:fbool"` | 		BOOL    `gorm:"column:fbool"` | ||||||
| 		STRING  `gorm:"column:fstring"` | 		STRING  `gorm:"column:fstring"` | ||||||
|  | 		TIME    `gorm:"column:ftime"` | ||||||
|  | 		BYTES   `gorm:"column:fbytes"` | ||||||
| 	} | 	} | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| @ -318,6 +323,8 @@ func TestTypeAliasField(t *testing.T) { | |||||||
| 		{Name: "FLOAT64", DBName: "ffloat64", BindNames: []string{"FLOAT64"}, DataType: schema.Float, Creatable: true, Updatable: true, Readable: true, Size: 64, Tag: `gorm:"column:ffloat64"`}, | 		{Name: "FLOAT64", DBName: "ffloat64", BindNames: []string{"FLOAT64"}, DataType: schema.Float, Creatable: true, Updatable: true, Readable: true, Size: 64, Tag: `gorm:"column:ffloat64"`}, | ||||||
| 		{Name: "BOOL", DBName: "fbool", BindNames: []string{"BOOL"}, DataType: schema.Bool, Creatable: true, Updatable: true, Readable: true, Tag: `gorm:"column:fbool"`}, | 		{Name: "BOOL", DBName: "fbool", BindNames: []string{"BOOL"}, DataType: schema.Bool, Creatable: true, Updatable: true, Readable: true, Tag: `gorm:"column:fbool"`}, | ||||||
| 		{Name: "STRING", DBName: "fstring", BindNames: []string{"STRING"}, DataType: schema.String, Creatable: true, Updatable: true, Readable: true, Tag: `gorm:"column:fstring"`}, | 		{Name: "STRING", DBName: "fstring", BindNames: []string{"STRING"}, DataType: schema.String, Creatable: true, Updatable: true, Readable: true, Tag: `gorm:"column:fstring"`}, | ||||||
|  | 		{Name: "TIME", DBName: "ftime", BindNames: []string{"TIME"}, DataType: schema.Time, Creatable: true, Updatable: true, Readable: true, Tag: `gorm:"column:ftime"`}, | ||||||
|  | 		{Name: "BYTES", DBName: "fbytes", BindNames: []string{"BYTES"}, DataType: schema.Bytes, Creatable: true, Updatable: true, Readable: true, Tag: `gorm:"column:fbytes"`}, | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	for _, f := range fields { | 	for _, f := range fields { | ||||||
|  | |||||||
| @ -232,6 +232,9 @@ func (stmt *Statement) AddVar(writer clause.Writer, vars ...interface{}) { | |||||||
| 			case reflect.Slice, reflect.Array: | 			case reflect.Slice, reflect.Array: | ||||||
| 				if rv.Len() == 0 { | 				if rv.Len() == 0 { | ||||||
| 					writer.WriteString("(NULL)") | 					writer.WriteString("(NULL)") | ||||||
|  | 				} else if rv.Type().Elem() == reflect.TypeOf(uint8(0)) { | ||||||
|  | 					stmt.Vars = append(stmt.Vars, v) | ||||||
|  | 					stmt.DB.Dialector.BindVarTo(writer, stmt, v) | ||||||
| 				} else { | 				} else { | ||||||
| 					writer.WriteByte('(') | 					writer.WriteByte('(') | ||||||
| 					for i := 0; i < rv.Len(); i++ { | 					for i := 0; i < rv.Len(); i++ { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 piyongcai
						piyongcai