From 09f46f01b90fb27eba84c75d8b13bff52857b920 Mon Sep 17 00:00:00 2001 From: Jinzhu Date: Sat, 16 Jan 2016 22:01:04 +0800 Subject: [PATCH] Refactor dialect --- dialect.go | 2 - common_dialect.go => dialect_common.go | 0 mssql.go => dialect_mssql.go | 0 mysql.go => dialect_mysql.go | 0 postgres.go => dialect_postgres.go | 0 sqlite3.go => dialect_sqlite3.go | 0 foundation.go | 83 -------------------------- 7 files changed, 85 deletions(-) rename common_dialect.go => dialect_common.go (100%) rename mssql.go => dialect_mssql.go (100%) rename mysql.go => dialect_mysql.go (100%) rename postgres.go => dialect_postgres.go (100%) rename sqlite3.go => dialect_sqlite3.go (100%) delete mode 100644 foundation.go diff --git a/dialect.go b/dialect.go index 926f8a11..aa23e31b 100644 --- a/dialect.go +++ b/dialect.go @@ -25,8 +25,6 @@ func NewDialect(driver string) Dialect { switch driver { case "postgres": d = &postgres{} - case "foundation": - d = &foundation{} case "mysql": d = &mysql{} case "sqlite3": diff --git a/common_dialect.go b/dialect_common.go similarity index 100% rename from common_dialect.go rename to dialect_common.go diff --git a/mssql.go b/dialect_mssql.go similarity index 100% rename from mssql.go rename to dialect_mssql.go diff --git a/mysql.go b/dialect_mysql.go similarity index 100% rename from mysql.go rename to dialect_mysql.go diff --git a/postgres.go b/dialect_postgres.go similarity index 100% rename from postgres.go rename to dialect_postgres.go diff --git a/sqlite3.go b/dialect_sqlite3.go similarity index 100% rename from sqlite3.go rename to dialect_sqlite3.go diff --git a/foundation.go b/foundation.go deleted file mode 100644 index 422fcc60..00000000 --- a/foundation.go +++ /dev/null @@ -1,83 +0,0 @@ -package gorm - -import ( - "fmt" - "reflect" - "time" -) - -type foundation struct { - commonDialect -} - -func (foundation) BinVar(i int) string { - return fmt.Sprintf("$%v", i) -} - -func (foundation) SupportLastInsertId() bool { - return false -} - -func (foundation) SqlTag(value reflect.Value, size int, autoIncrease bool) string { - switch value.Kind() { - case reflect.Bool: - return "boolean" - case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Uint, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uintptr: - if autoIncrease { - return "serial" - } - return "int" - case reflect.Int64, reflect.Uint64: - if autoIncrease { - return "bigserial" - } - return "bigint" - case reflect.Float32, reflect.Float64: - return "double" - case reflect.String: - if size > 0 && size < 65532 { - return fmt.Sprintf("varchar(%d)", size) - } - return "clob" - case reflect.Struct: - if _, ok := value.Interface().(time.Time); ok { - return "datetime" - } - default: - if _, ok := value.Interface().([]byte); ok { - return "blob" - } - } - panic(fmt.Sprintf("invalid sql type %s (%s) for foundation", value.Type().Name(), value.Kind().String())) -} - -func (s foundation) ReturningStr(tableName, key string) string { - return fmt.Sprintf("RETURNING %v.%v", tableName, key) -} - -func (s foundation) HasTable(scope *Scope, tableName string) bool { - var count int - s.RawScanInt(scope, &count, "SELECT count(*) FROM INFORMATION_SCHEMA.tables WHERE table_schema = current_schema AND table_type = 'TABLE' AND table_name = ?", tableName) - return count > 0 -} - -func (s foundation) HasColumn(scope *Scope, tableName string, columnName string) bool { - var count int - s.RawScanInt(scope, &count, "SELECT count(*) FROM INFORMATION_SCHEMA.columns WHERE table_schema = current_schema AND table_name = ? AND column_name = ?", tableName, columnName) - return count > 0 -} - -func (s foundation) RemoveIndex(scope *Scope, indexName string) { - scope.NewDB().Exec(fmt.Sprintf("DROP INDEX %v", s.Quote(indexName))) -} - -func (s foundation) HasIndex(scope *Scope, tableName string, indexName string) bool { - var count int - s.RawScanInt(scope, &count, "SELECT count(*) FROM INFORMATION_SCHEMA.indexes WHERE table_schema = current_schema AND table_name = ? AND index_name = ?", tableName, indexName) - return count > 0 -} - -func (s foundation) CurrentDatabase(scope *Scope) (name string) { - s.RawScanString(scope, &name, "SELECT CURRENT_SCHEMA") - return -}