From c42f893230cd34310e11cbb40617cadd8929f0f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=95=86=E8=AE=AF=E5=9C=A8=E7=BA=BF?= Date: Mon, 5 May 2014 22:33:28 +0800 Subject: [PATCH] support enum type for mysql MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 商讯在线 --- column.go | 23 +++++++++++++++++++++-- type.go | 4 +++- 2 files changed, 24 insertions(+), 3 deletions(-) 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{})