mirror of
https://github.com/grafana/grafana.git
synced 2024-11-30 12:44:10 -06:00
5f1305d280
* Migrator: Extend support to rename columns * SQLStore: Add deprecation comments for breaking migrations
50 lines
1.9 KiB
Go
50 lines
1.9 KiB
Go
package migrations
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
. "github.com/grafana/grafana/pkg/services/sqlstore/migrator"
|
|
)
|
|
|
|
func addDropAllIndicesMigrations(mg *Migrator, versionSuffix string, table Table) {
|
|
for _, index := range table.Indices {
|
|
migrationId := fmt.Sprintf("drop index %s - %s", index.XName(table.Name), versionSuffix)
|
|
mg.AddMigration(migrationId, NewDropIndexMigration(table, index))
|
|
}
|
|
}
|
|
|
|
func addTableIndicesMigrations(mg *Migrator, versionSuffix string, table Table) {
|
|
for _, index := range table.Indices {
|
|
migrationId := fmt.Sprintf("create index %s - %s", index.XName(table.Name), versionSuffix)
|
|
mg.AddMigration(migrationId, NewAddIndexMigration(table, index))
|
|
}
|
|
}
|
|
|
|
// addTableRenameMigration may cause breaking changes.
|
|
// DEPRECATED: It should no longer be used. Kept only for legacy reasons.
|
|
func addTableRenameMigration(mg *Migrator, oldName string, newName string, versionSuffix string) {
|
|
migrationId := fmt.Sprintf("Rename table %s to %s - %s", oldName, newName, versionSuffix)
|
|
mg.AddMigration(migrationId, NewRenameTableMigration(oldName, newName))
|
|
}
|
|
|
|
func addTableReplaceMigrations(mg *Migrator, from Table, to Table, migrationVersion int64, tableDataMigration map[string]string) {
|
|
fromV := version(migrationVersion - 1)
|
|
toV := version(migrationVersion)
|
|
tmpTableName := to.Name + "_tmp_qwerty"
|
|
|
|
createTable := fmt.Sprintf("create %v %v", to.Name, toV)
|
|
copyTableData := fmt.Sprintf("copy %v %v to %v", to.Name, fromV, toV)
|
|
dropTable := fmt.Sprintf("drop %v", tmpTableName)
|
|
|
|
addDropAllIndicesMigrations(mg, fromV, from)
|
|
addTableRenameMigration(mg, from.Name, tmpTableName, fromV)
|
|
mg.AddMigration(createTable, NewAddTableMigration(to))
|
|
addTableIndicesMigrations(mg, toV, to)
|
|
mg.AddMigration(copyTableData, NewCopyTableDataMigration(to.Name, tmpTableName, tableDataMigration))
|
|
mg.AddMigration(dropTable, NewDropTableMigration(tmpTableName))
|
|
}
|
|
|
|
func version(v int64) string {
|
|
return fmt.Sprintf("v%v", v)
|
|
}
|