From 0a695ba17a1dd7ab492c470ffbcb022c7b8f7c32 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Tue, 20 Jan 2015 14:44:37 +0100 Subject: [PATCH] Final work on migration, now there is no usage of xorm table sync --- pkg/services/sqlstore/migrations.go | 18 ++++++++++++++++++ pkg/services/sqlstore/migrations_test.go | 2 +- pkg/services/sqlstore/migrator/dialect.go | 5 +++++ .../sqlstore/migrator/mysql_dialect.go | 4 ++++ .../sqlstore/migrator/postgres_dialect.go | 4 ++++ .../sqlstore/migrator/sqlite_dialect.go | 4 ++++ pkg/services/sqlstore/sqlstore.go | 6 +----- 7 files changed, 37 insertions(+), 6 deletions(-) diff --git a/pkg/services/sqlstore/migrations.go b/pkg/services/sqlstore/migrations.go index d094df460fd..d0458fb01f5 100644 --- a/pkg/services/sqlstore/migrations.go +++ b/pkg/services/sqlstore/migrations.go @@ -8,6 +8,7 @@ func addMigrations(mg *Migrator) { addAccountMigrations(mg) addDashboardMigration(mg) addDataSourceMigration(mg) + addTokenMigrations(mg) } func addMigrationLogMigrations(mg *Migrator) { @@ -129,3 +130,20 @@ func addDataSourceMigration(mg *Migrator) { mg.AddMigration("add unique index data_source.account_id_name", new(AddIndexMigration). Table("data_source").Columns("account_id", "name").Unique()) } + +func addTokenMigrations(mg *Migrator) { + mg.AddMigration("create token table", new(AddTableMigration). + Name("token").WithColumns( + &Column{Name: "id", Type: DB_BigInt, IsPrimaryKey: true, IsAutoIncrement: true}, + &Column{Name: "account_id", Type: DB_BigInt, Nullable: false}, + &Column{Name: "name", Type: DB_NVarchar, Length: 255, Nullable: false}, + &Column{Name: "token", Type: DB_NVarchar, Length: 255, Nullable: false}, + &Column{Name: "role", Type: DB_NVarchar, Length: 255, Nullable: false}, + &Column{Name: "created", Type: DB_DateTime, Nullable: false}, + &Column{Name: "updated", Type: DB_DateTime, Nullable: false}, + )) + + //------- indexes ------------------ + mg.AddMigration("add index token.account_id", new(AddIndexMigration). + Table("token").Columns("account_id")) +} diff --git a/pkg/services/sqlstore/migrations_test.go b/pkg/services/sqlstore/migrations_test.go index 078aee1ce5f..d3f64d37063 100644 --- a/pkg/services/sqlstore/migrations_test.go +++ b/pkg/services/sqlstore/migrations_test.go @@ -15,7 +15,7 @@ import ( var indexTypes = []string{"Unknown", "INDEX", "UNIQUE INDEX"} -func ATestMigrations(t *testing.T) { +func TestMigrations(t *testing.T) { log.NewLogger(0, "console", `{"level": 0}`) testDBs := []sqlutil.TestDB{ diff --git a/pkg/services/sqlstore/migrator/dialect.go b/pkg/services/sqlstore/migrator/dialect.go index 8734b56cc26..00080d08477 100644 --- a/pkg/services/sqlstore/migrator/dialect.go +++ b/pkg/services/sqlstore/migrator/dialect.go @@ -15,6 +15,7 @@ type Dialect interface { EqStr() string ShowCreateNull() bool SqlType(col *Column) string + SupportEngine() bool CreateIndexSql(tableName string, index *Index) string CreateTableSql(table *Table) string @@ -85,6 +86,10 @@ func (b *BaseDialect) CreateTableSql(table *Table) string { } sql = sql[:len(sql)-2] + ")" + if b.dialect.SupportEngine() { + sql += " ENGINE=InnoDB DEFAULT CHARSET UTF8 " + } + sql += ";" return sql } diff --git a/pkg/services/sqlstore/migrator/mysql_dialect.go b/pkg/services/sqlstore/migrator/mysql_dialect.go index d2906d0bf56..195d52d1934 100644 --- a/pkg/services/sqlstore/migrator/mysql_dialect.go +++ b/pkg/services/sqlstore/migrator/mysql_dialect.go @@ -13,6 +13,10 @@ func NewMysqlDialect() *Mysql { return &d } +func (db *Mysql) SupportEngine() bool { + return true +} + func (db *Mysql) Quote(name string) string { return "`" + name + "`" } diff --git a/pkg/services/sqlstore/migrator/postgres_dialect.go b/pkg/services/sqlstore/migrator/postgres_dialect.go index 74d26f085f2..f4697d15664 100644 --- a/pkg/services/sqlstore/migrator/postgres_dialect.go +++ b/pkg/services/sqlstore/migrator/postgres_dialect.go @@ -13,6 +13,10 @@ func NewPostgresDialect() *Postgres { return &d } +func (db *Postgres) SupportEngine() bool { + return false +} + func (db *Postgres) Quote(name string) string { return "\"" + name + "\"" } diff --git a/pkg/services/sqlstore/migrator/sqlite_dialect.go b/pkg/services/sqlstore/migrator/sqlite_dialect.go index 60df183bd8f..4a4d3f475b1 100644 --- a/pkg/services/sqlstore/migrator/sqlite_dialect.go +++ b/pkg/services/sqlstore/migrator/sqlite_dialect.go @@ -11,6 +11,10 @@ func NewSqlite3Dialect() *Sqlite3 { return &d } +func (db *Sqlite3) SupportEngine() bool { + return false +} + func (db *Sqlite3) Quote(name string) string { return "`" + name + "`" } diff --git a/pkg/services/sqlstore/sqlstore.go b/pkg/services/sqlstore/sqlstore.go index 89964b2c7dd..81c51e43c2b 100644 --- a/pkg/services/sqlstore/sqlstore.go +++ b/pkg/services/sqlstore/sqlstore.go @@ -33,11 +33,6 @@ var ( UseSQLite3 bool ) -func init() { - tables = make([]interface{}, 0) - tables = append(tables, new(m.Token)) -} - func EnsureAdminUser() { adminQuery := m.GetUserByLoginQuery{LoginOrEmail: setting.AdminUser} @@ -78,6 +73,7 @@ func SetEngine(engine *xorm.Engine, enableLog bool) (err error) { dialect = migrator.NewDialect(x.DriverName()) migrator := migrator.NewMigrator(x) + migrator.LogLevel = log.INFO addMigrations(migrator) if err := migrator.Start(); err != nil {