| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- 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
- }
|