From 7aff5dd6932468a2369504a48b3293e58be6e2ae Mon Sep 17 00:00:00 2001 From: Lunny Xiao Date: Wed, 24 Jun 2020 21:00:48 +0800 Subject: [PATCH] unsigned --- dialects/sqlite3.go | 34 ++++++++++++++++++++++++++++++++++ integrations/types_test.go | 22 ++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/dialects/sqlite3.go b/dialects/sqlite3.go index 62a38397..fb38ebf6 100644 --- a/dialects/sqlite3.go +++ b/dialects/sqlite3.go @@ -149,6 +149,40 @@ var ( Suffix: '`', IsReserved: schemas.AlwaysReserve, } + + sqlite3Types = map[string]int{ + "INT": schemas.NUMERIC_TYPE, + "INTEGER": schemas.NUMERIC_TYPE, + "TINYINT": schemas.NUMERIC_TYPE, + "SMALLINT": schemas.NUMERIC_TYPE, + "MEDIUMINT": schemas.NUMERIC_TYPE, + "BIGINT": schemas.NUMERIC_TYPE, + "UNSIGNED BIG INT": schemas.NUMERIC_TYPE, + "INT2": schemas.NUMERIC_TYPE, + "INT8": schemas.NUMERIC_TYPE, + + "REAL": schemas.NUMERIC_TYPE, + "DOUBLE": schemas.NUMERIC_TYPE, + "DOUBLE PRECISION": schemas.NUMERIC_TYPE, + "FLOAT": schemas.NUMERIC_TYPE, + "NUMERIC": schemas.NUMERIC_TYPE, + "DECIMAL": schemas.NUMERIC_TYPE, + "BOOLEAN": schemas.NUMERIC_TYPE, + + "CHARACTER": schemas.TEXT_TYPE, + "VARCHAR": schemas.TEXT_TYPE, + "VARYING CHARACTER": schemas.TEXT_TYPE, + "NCHAR": schemas.TEXT_TYPE, + "NATIVE CHARACTER": schemas.TEXT_TYPE, + "NVARCHAR": schemas.TEXT_TYPE, + "TEXT": schemas.TEXT_TYPE, + "CLOB": schemas.TEXT_TYPE, + + "BLOB": schemas.BLOB_TYPE, + + "DATE": schemas.TIME_TYPE, + "DATETIME": schemas.TIME_TYPE, + } ) type sqlite3 struct { diff --git a/integrations/types_test.go b/integrations/types_test.go index 112308f3..1a4faa42 100644 --- a/integrations/types_test.go +++ b/integrations/types_test.go @@ -375,3 +375,25 @@ func TestCustomType2(t *testing.T) { fmt.Println(users) } + +func TestUnsigned(t *testing.T) { + type MyUnsignedStruct struct { + Id uint64 + } + + assert.NoError(t, PrepareEngine()) + assertSync(t, new(MyUnsignedStruct)) + + tables, err := testEngine.DBMetas() + assert.NoError(t, err) + assert.EqualValues(t, 1, len(tables)) + assert.EqualValues(t, 1, len(tables[0].Columns())) + + switch testEngine.Dialect().URI().DBType { + case schemas.SQLITE: + assert.EqualValues(t, "INTEGER", tables[0].Columns()[0].SQLType.Name) + case schemas.MYSQL: + assert.EqualValues(t, "unsigned int", tables[0].Columns()[0].SQLType.Name) + } + +}