Files
grafana/pkg/services/sqlstore/migrations/dialect.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
}