diff --git a/transformers/struct.go b/transformers/struct.go index 7547eccca5..593722fc69 100644 --- a/transformers/struct.go +++ b/transformers/struct.go @@ -299,11 +299,23 @@ func defaultGoTypeToSchemaType(v reflect.Type) (schema.ValueType, error) { } return schema.TypeJSON, nil case reflect.Slice: + if v.Elem().Kind() == reflect.Uint8 { + return schema.TypeByteArray, nil + } + switch elemValueType, _ := defaultGoTypeToSchemaType(v.Elem()); elemValueType { case schema.TypeString: return schema.TypeStringArray, nil case schema.TypeInt: return schema.TypeIntArray, nil + case schema.TypeCIDR: + return schema.TypeCIDRArray, nil + case schema.TypeUUID: + return schema.TypeUUIDArray, nil + case schema.TypeInet: + return schema.TypeInetArray, nil + case schema.TypeMacAddr: + return schema.TypeMacAddrArray, nil default: return schema.TypeJSON, nil } diff --git a/transformers/struct_test.go b/transformers/struct_test.go index 853643c338..f22fe32a6a 100644 --- a/transformers/struct_test.go +++ b/transformers/struct_test.go @@ -31,6 +31,8 @@ type ( StringArrayCol []string `json:"string_array_col,omitempty"` StringPointerArrayCol []*string `json:"string_pointer_array_col,omitempty"` + ByteArrayCol []byte `json:"byte_array_col,omitempty"` + TimeCol time.Time `json:"time_col,omitempty"` TimePointerCol *time.Time `json:"time_pointer_col,omitempty"` JSONTag *string `json:"json_tag"` @@ -94,6 +96,10 @@ var ( Name: "string_pointer_array_col", Type: schema.TypeStringArray, }, + { + Name: "byte_array_col", + Type: schema.TypeByteArray, + }, { Name: "time_col", Type: schema.TypeTimestamp,