diff --git a/column.go b/column.go index 20b3ad01..b4aa5cfd 100644 --- a/column.go +++ b/column.go @@ -31,11 +31,30 @@ type Column struct { IsVersion bool fieldPath []string DefaultIsEmpty bool + EnumOptions map[string]int } func NewColumn(name, fieldName string, sqlType SQLType, len1, len2 int, nullable bool) *Column { - return &Column{name, fieldName, sqlType, len1, len2, nullable, "", make(map[string]bool), false, false, - TWOSIDES, false, false, false, false, nil, false} + return &Column{ + Name: name, + FieldName: fieldName, + SQLType: sqlType, + Length: len1, + Length2: len2, + Nullable: nullable, + Default: "", + Indexes: make(map[string]bool), + IsPrimaryKey: false, + IsAutoIncrement: false, + MapType: TWOSIDES, + IsCreated: false, + IsUpdated: false, + IsCascade: false, + IsVersion: false, + fieldPath: nil, + DefaultIsEmpty: false, + EnumOptions: make(map[string]int), + } } // generate column description string according dialect diff --git a/type.go b/type.go index 4f0b4d48..c1e54efe 100644 --- a/type.go +++ b/type.go @@ -62,6 +62,7 @@ var ( Integer = "INTEGER" BigInt = "BIGINT" + Enum = "ENUM" Char = "CHAR" Varchar = "VARCHAR" TinyText = "TINYTEXT" @@ -104,6 +105,7 @@ var ( Integer: NUMERIC_TYPE, BigInt: NUMERIC_TYPE, + Enum: TEXT_TYPE, Char: TEXT_TYPE, Varchar: TEXT_TYPE, TinyText: TEXT_TYPE, @@ -293,7 +295,7 @@ func SQLType2Type(st SQLType) reflect.Type { return reflect.TypeOf(float32(1)) case Double: return reflect.TypeOf(float64(1)) - case Char, Varchar, TinyText, Text, MediumText, LongText: + case Char, Varchar, TinyText, Text, MediumText, LongText, Enum: return reflect.TypeOf("") case TinyBlob, Blob, LongBlob, Bytea, Binary, MediumBlob, VarBinary: return reflect.TypeOf([]byte{})