53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package migrations
|
|
|
|
import "fmt"
|
|
|
|
type Dialect interface {
|
|
DriverName() string
|
|
ToDBTypeSql(columnType ColumnType, length int) string
|
|
TableCheckSql(tableName string) (string, []interface{})
|
|
}
|
|
|
|
type Sqlite3 struct {
|
|
}
|
|
|
|
type Mysql struct {
|
|
}
|
|
|
|
func (db *Sqlite3) DriverName() string {
|
|
return SQLITE
|
|
}
|
|
|
|
func (db *Mysql) DriverName() string {
|
|
return MYSQL
|
|
}
|
|
|
|
func (db *Sqlite3) ToDBTypeSql(columnType ColumnType, length int) string {
|
|
switch columnType {
|
|
case DB_TYPE_STRING:
|
|
return "TEXT"
|
|
}
|
|
|
|
panic("Unsupported db type")
|
|
}
|
|
|
|
func (db *Mysql) ToDBTypeSql(columnType ColumnType, length int) string {
|
|
switch columnType {
|
|
case DB_TYPE_STRING:
|
|
return fmt.Sprintf("NVARCHAR(%d)", length)
|
|
}
|
|
|
|
panic("Unsupported db type")
|
|
}
|
|
|
|
func (db *Sqlite3) TableCheckSql(tableName string) (string, []interface{}) {
|
|
args := []interface{}{tableName}
|
|
return "SELECT name FROM sqlite_master WHERE type='table' and name = ?", args
|
|
}
|
|
|
|
func (db *Mysql) TableCheckSql(tableName string) (string, []interface{}) {
|
|
args := []interface{}{"grafana", tableName}
|
|
sql := "SELECT `TABLE_NAME` from `INFORMATION_SCHEMA`.`TABLES` WHERE `TABLE_SCHEMA`=? and `TABLE_NAME`=?"
|
|
return sql, args
|
|
}
|