| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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))
- }
- }
- 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)
- }
|